Docker : 通过主机访问另一个容器
Docker : Accessing another container by host
我在 docker-compose yaml 文件中定义了两个需要相互通信的容器,但它们不能。
version: "3.9"
networks:
localdev:
driver: 'bridge'
services:
master-db:
image: mysql:8.0
container_name: master-db
hostname: master-db
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "4000:3306"
networks:
- localdev
page-store:
hostname: page-store
build:
context: .
dockerfile: Dockerfile.page_store
container_name: page-store
ports:
- "2020:2020"
networks:
- localdev
links:
- master-db
在页面存储 Python Flask 微服务中,我尝试使用主机名 master-db 访问 MySQL 数据库,但名称无法解析。
你们应该能够使用各自的服务名称相互连接。 master-db
和 page-store
删除 hostname
根据 Official guide,如果要使用 hostname: page-store
等,您可能必须在容器的 /etc/hosts
中定义 master-db
、page-store
。
请参考 SO线程。
同时使用 --links 可能不是最佳选择。
我在 docker-compose yaml 文件中定义了两个需要相互通信的容器,但它们不能。
version: "3.9"
networks:
localdev:
driver: 'bridge'
services:
master-db:
image: mysql:8.0
container_name: master-db
hostname: master-db
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "4000:3306"
networks:
- localdev
page-store:
hostname: page-store
build:
context: .
dockerfile: Dockerfile.page_store
container_name: page-store
ports:
- "2020:2020"
networks:
- localdev
links:
- master-db
在页面存储 Python Flask 微服务中,我尝试使用主机名 master-db 访问 MySQL 数据库,但名称无法解析。
你们应该能够使用各自的服务名称相互连接。 master-db
和 page-store
删除 hostname
根据 Official guide,如果要使用 hostname: page-store
等,您可能必须在容器的 /etc/hosts
中定义 master-db
、page-store
。
请参考
同时使用 --links 可能不是最佳选择。