当network_mode:“bridge”(docker-compose)时,无法从localhost连接容器端口

时间:2016-07-04 18:55:37

标签: networking docker localhost containers docker-compose

这是我的docker-compose.yml

yml version: '2' services: admin_db: build: context: . dockerfile: postgres.dockerfile args: - DB_NAME=admin_db - DB_USER=admin - DB_PASSWORD=admin_pass network_mode: "default" admin: build: context: . dockerfile: admin.dockerfile args: - UID=$UID - GID=$GID - UNAME=$UNAME command: /bin/bash depends_on: - admin_db ports: - "8000:8000" links: - admin_db network_mode: "bridge"

如果使用networking_mode:“bridge”,我应该能够从{@ 1}}从localhost访问我的应用程序(admin),但是目前,我只能在http://127.0.0.1:8000/从localhost访问它。 当networking_mode是“host”时,我能够random-ip:8000访问,但是我无法链接容器。 有两种解决办法吗? - 链接容器 - 从localhost

http://127.0.0.1:8000/上运行的应用

1 个答案:

答案 0 :(得分:0)

如果由于某些未知原因,正常链接不起作用,您可以始终创建另一个桥接网络并直接连接到该docker镜像。通过这样做,运行图像的IP地址将始终相同。

我会像这样编辑:

version: '2'
services:
  admin_db:
    build:
      context: .
      dockerfile: postgres.dockerfile
      args:
        - DB_NAME=admin_db
        - DB_USER=admin
        - DB_PASSWORD=admin_pass
    networks:
      back_net:
        ipv4_address: 11.0.0.2

  admin:
    build:
      context: .
      dockerfile: admin.dockerfile
      args:
        - UID=$UID
        - GID=$GID
        - UNAME=$UNAME
    command: /bin/bash
    depends_on:
      - admin_db
    ports:
      - "8000:8000"
    extra_hosts:
      - "admin_db:11.0.0.2"
    networks:
      back_net:
        ipv4_address: 11.0.0.3

networks:
  back_net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
      com.docker.network.bridge.name: "back"
    ipam:
      driver: default
      config:
        - subnet: 11.0.0.0/24
          gateway: 11.0.0.1

希望有所帮助。