2016-07-04 1 views
1

Это мой docker-compose.ymlНевозможно подключиться контейнерный порт с локального хоста при network_mode: «мост» (докер-Compose)

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: «мост» Я должен быть в состоянии получить доступ мое приложение (admin) на http://127.0.0.1:8000/ с localhost, но в настоящее время я могу получить к нему доступ только на random-ip:8000 с localhost. Я могу использовать http://127.0.0.1:8000/, когда network_mode является «узлом», но тогда я не могу связать контейнеры. Есть ли какое-нибудь решение, чтобы иметь обе вещи? - связанные контейнеры - приложение работает на http://127.0.0.1:8000/ с локального

+1

Что произойдет, если вы просто оставите «network_mode» из всех служб? Должен работать так, как вы хотите по умолчанию. (Разумеется, различные режимы сети будут усложнять ситуацию.) – ldg

+0

, когда в config нет «network_mode», тогда я могу получить доступ к моему приложению только на 'random-ip: 8000' – user3701928

+0

Вы работаете на MacOS , Windows или с помощью док-машины? – BMitch

ответ

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 

Надежда, что помогает.

Смежные вопросы