2016-07-04 18 views
1

Das ist mein docker-compose.ymlUnable Containerhafen von localhost, wenn network_mode verbinden: "Brücke" (Docker-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"

Wenn mit networking_mode: "Brücke" Ich sollte in der Lage für den Zugriff auf meine app (admin) auf http://127.0.0.1:8000/ von localhost, aber derzeit kann ich nur auf random-ip:8000 von localhost zugreifen. Ich bin in der Lage zu http://127.0.0.1:8000/ Zugriff, wenn networking_mode "Host" ist, aber ich bin nicht in der Lage, Container zu verknüpfen. Gibt es eine Lösung, beide Dinge zu haben? - linked Container - App auf http://127.0.0.1:8000/ von localhost

+1

Was passiert, wenn Sie den "network_mode" von allen Diensten einfach weglassen? Sollte standardmäßig so funktionieren, wie Sie es wünschen. (Sicherlich mit verschiedenen Netzwerkmodi Spec wird die Dinge komplizierter machen.) – ldg

+0

wenn kein "network_mode" in Config dann kann ich auf meine app nur auf 'random-ip: 8000' zugreifen – user3701928

+0

Sie laufen auf MacOS , Windows oder Docker-Maschine? – BMitch

Antwort

0

Wenn aus irgendeinem unbekannten Grunde normale Verknüpfung Sie können immer Netzwerk einer anderen überbrückten funktioniert nicht läuft erstellen und direkt an diesem Docker Bild. Dadurch wird die IP-Adresse des laufenden Bildes immer gleich sein.

würde ich es wie folgt bearbeiten:

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 

Hoffnung, das hilft.