簡體   English   中英

當network_mode:“bridge”(docker-compose)時,無法從localhost連接容器端口

[英]Unable to connect container port from localhost when network_mode: “bridge” (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”,我應該可以從http://127.0.0.1:8000/ :// http://127.0.0.1:8000/http://127.0.0.1:8000/ random-ip:8000訪問我的應用程序(admin),但是目前,我只能通過random-ip:8000訪問它本地主機。 當networking_mode是“host”時,我能夠http://127.0.0.1:8000/訪問,但是我無法鏈接容器。 有兩種解決辦法嗎? - 鏈接容器 - 從localhost在http://127.0.0.1:8000/上運行的應用程序

如果由於某些未知原因,正常鏈接不起作用,您可以始終創建另一個橋接網絡並直接連接到該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

希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM