【发布时间】:2018-04-29 04:28:55
【问题描述】:
我有两个服务 - 一个是 app,另一个是 db。 这是一个 docker compose 文件的草图:
version: "2"
services:
company:
container_name: company-app
extends:
file: ../base-config.yml
service: company
links:
- company-db
env_file: ./company.env
extra_hosts:
- "local.company.com:127.0.0.1"
company-db:
container_name: company-db
hostname: localhost
extends:
file: ../base-config.yml
service: company-db
env_file: ../db.env
应用程序服务尝试连接到 url jdbc:mysql://localhost/company_db 上的数据库
在 docker 容器中运行时会导致 Communications link failure。
我已附加到正在运行的应用容器并检查 etc/hosts 文件并找到下一个内容:
root@d1a4391a83f4:/# cat etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 local.company.com
172.18.0.3 d1a4391a83f4
据我所知,docker compose 添加的最后一个条目是我可以引用 db 容器的 ip,我还发现它可以被 company-db 域引用。
正如您所见,我尝试向 company-db 服务添加主机名选项,但没有成功。
我的问题是我能否通过仅更改撰写配置来实现通过相同的本地主机 url 引用 company-db 服务的能力?
【问题讨论】:
标签: docker docker-compose docker-networking