首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行2项服务

运行2项服务
EN

Stack Overflow用户
提问于 2015-10-23 04:46:09
回答 1查看 743关注 0票数 2

我正在为github的链接性项目构建一个映像,它基于neo4j数据库中心中已经存在的一个映像。neo映像在端口7474上自动运行服务器,我的映像在端口8000上运行。

当我运行我的映像时,我会发布两个端口(我可以通过公开来实现这一点吗?)

代码语言:javascript
复制
docker run -d --publish=7474:7474 --publish=8000:8000 linkurious

但似乎只有我的服务器在运行。如果我撞到http://[ip]:7474/,我什么也得不到。我有什么特别的事情要确保他们俩都跑吗?

*编辑I *

这是我的Dockerfile:

代码语言:javascript
复制
FROM neo4j/neo4j:latest
RUN apt-get -y update
RUN apt-get install -y git
RUN apt-get install -y npm
RUN apt-get install -y nodejs-legacy
RUN git clone git://github.com/Linkurious/linkurious.js.git
RUN cd linkurious.js && npm install && npm run build
CMD cd linkurious.js && npm start

*编辑II *

为了帮助解释我的困惑,我问了另一个问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 05:14:45

EXPOSE允许容器间通信(在同一个码头守护进程内),并使用docker run --link选项。

端口映射是为了将EXPOSEd端口映射到主机,以允许客户端到容器的通信.所以你需要--publish

也见"码头“公开”与“发布”的区别“。

还请参阅"使用码头的高级实用程序:连接容器“的示例

确保ip是正确的($(docker-machine ip default))。

如果您使用的是VM (意思是,您不是直接在Linux主机上使用docker,而是在带有VirtualBox的Linux上使用),请确保映射的端口7474和8000是从主机转发到VM的端口

代码语言:javascript
复制
VBoxManage controlvm boot2docker-vm natpf1 "name,tcp,,7474,,7474"
VBoxManage controlvm boot2docker-vm natpf1 "name,tcp,,8000,,8000"

在OP的例子中,这是使用neo4j:参见基于新4j/新4j映像和其Dockerfile的"带码头的Neo4j

代码语言:javascript
复制
ENTRYPOINT ["/docker-entrypoint.sh"] 
CMD ["neo4j"]

它不打算用于安装另一个服务(如nodejs),在该服务中,CMD cd linkurious.js && npm start将完全覆盖neo4j基本映像CMD (意味着neo4j永远不会启动)。

它的目的是独立运行:

代码语言:javascript
复制
# interactive with terminal
docker run -i -t --rm --name neo4j -v $HOME/neo4j-data:/data -p 8474:7474 neo4j/neo4j

# as daemon running in the background
docker run -d --name neo4j -v $HOME/neo4j-data:/data -p 8474:7474 neo4j/neo4j

然后由另一个图像使用,并带有--link neo4j:neo4j指令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33295052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档