Docker - 从容器组成访问LAN

问题描述 投票:0回答:1

假设我的docker-compose中有2个服务:

version: "2.4"

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres

initializer在为此docker-compose文件创建的网络中使用postgres主机名访问"postgres",但现在我希望initializer也与LAN中的某些主机进行交互,initializer现在无法访问(所有请求只是超时)。

我尝试仅在容器和network-mode: bridge上使用initializer,并且局域网访问有效,但在这些情况下initializer无法访问postgres

如何从postgres容器访问LAN和initializer容器?

docker docker-compose docker-networking
1个回答
1
投票

解决方案是将另一个网络添加到initializer服务,而不是覆盖默认值。代码清晰:

version: "2.4"

networks:
  lan_access:
    driver: bridge

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres
    networks:
      - lan_access
      - default
© www.soinside.com 2019 - 2024. All rights reserved.