[英]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.100
是docker-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.