簡體   English   中英

Docker-compose v2將端口公開給計算機

[英]Docker-compose v2 expose port to machine

我曾經使用docker-compose v1運行一組服務,然后使用Django的dev serve連接到它們。 我曾經用<machine_ip>:<port> (smt像192.168.99.100:5432一樣用於postgres)連接到服務(例如db)

現在,我剛剛為Mac安裝了docker,而v1無法正常工作。 我移至版本2,但Django抱怨無法監聽端口5432 據我了解,這是network問題,但我無法確定如何配置它。 從理論上講,會為組合中的所有服務創建一個默認網絡,這通常很好,但對我而言不是這樣。 我使用compose來啟動一組服務,以連接到django的本地執行。

這是我的docker-compose文件

version: '2'
services:
  db:
    image: postgres:9.4
    volumes_from:
      - data
    ports:
      - "5432:5432"
  es:
    image: elasticsearch:2.3
    ports:
      - "9200:9200"
      - "9300:9300"
  rabbit:
    image: rabbitmq:3
    ports:
      - "5672:5672"
      - "48429:48429"
  data:
    # use this that is already downloaded
    # links just to keep the db
    image: alpine:3.3
    command: echo 'Data Container for PostgreSQL'
    volumes:
      - /var/lib/postgresql/data
networks:
  default:
    driver: bridge

在我的django conf中

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': '192.168.99.100',  # 'localhost',
        'PORT': '5432'  # '6543'
    },
}

其中192.168.99.100docker-machine ip

結果是

django.db.utils.OperationalError: could not connect to server: Connection refused
    Is the server running on host "192.168.99.100" and accepting
    TCP/IP connections on port 5432?

關於如何將所有這些端口公開給機器ip的任何幫助?

嘗試使用dockers內部網絡功能讓容器彼此通信。

version: '2'
services:
  db:
    image: postgres:9.4
    volumes:
      - datavolume_postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
  es:
    image: elasticsearch:2.3
    ports:
      - "9200:9200"
      - "9300:9300"
  rabbit:
    image: rabbitmq:3
    ports:
      - "5672:5672"
      - "48429:48429"
    depends_on:
      - "db"
# Named volume
volumes:
  datavolume_postgres: {}

#You dont need to specify the default network

並在您的django.conf

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',  # 'localhost',
        'PORT': '5432'  # '6543'
    },
}

我不知道什么es取決於BU我希望你明白了吧

僅供參考

暫無
暫無

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

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