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-dbpage-store 删除 hostname

根据 Official guide,如果要使用 hostname: page-store 等,您可能必须在容器的 /etc/hosts 中定义 master-dbpage-store

请参考 SO线程。

同时使用 --links 可能不是最佳选择。