docker-compose external_link mongo network not reachable

我有一个奇怪的情况,我无法连接到我的泊坞窗撰写我正在运行的mongo数据库。 我的撰写文件:

version: '3' services: app: image: myimage:latest ports: - "8080:8080" external_links: - myname:mongo environment: - MONGO_URL=mongodb://myname:27017/test 

我发现一些信息都没有解决我的问题。 即我试过了:

1)

创build一个自定义networking:

 docker network create mongonet 

然后用--network mongonet标志启动mongo并添加组合:

 networks: default: external: name: mongonet 

也没有什么。

我查看了我撰写的/ etc / hosts文件,并没有列出任何DNS条目。

如果我做一个docker inspect并抓住mongo知识产权,并将其添加到我的撰写,这是好的,像一个魅力的作品。

我开始像这样:

 docker run -d -p 27017:27017 -v ~/mongo_data:/data/db mongo 

我真的很困惑,因为我相信这是一个开箱即用的东西。 奇怪,我不能使它的工作。 我已经find了内部链接的示例(vs external_link),但这不适合我,因为我有许多服务,我希望像这样运行,而不是所有的服务都应该同时运行。

我开始我的docker撰写这样的:

docker-compose up --force-recreate

我的版本是:

docker-compose version 1.17.1, build 6d101fb

Docker version 17.05.0-ce, build 89658be

我的问题:我如何成功地链接一个正在运行的mongo容器作为外部链接到我的应用程序容器中,以便它们可以连接到它们?

我的dockerPS:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5cf6e08d6fde mongo "docker-entrypoint..." About an hour ago Up About an hour 0.0.0.0:27017->27017/tcp gallant_feynman 

链接已弃用,请使用networking。

笔记:

如果您使用的是第2版或更高版本的文件格式,外部创build的容器必须至less连接到与链接到它们的服务相同的networking。 链接是一个遗留选项。 我们build议使用networking。

networking的方式应该工作。 我想你错过了一些片断。 确保给mongo容器一个名称,并确保将app容器附加到撰写文件中的networking上:

 docker network create mongonet 

 docker run -d -p 27017:27017 --network mongonet --name mongo -v ~/mongo_data:/data/db mongo 

 version: '3' services: app: image: myimage:latest ports: - "8080:8080" environment: - MONGO_URL=mongodb://mongo:27017/test networks: - mongonet networks: default: external: name: mongonet