[英]Docker-Compose Django can't connect to DB or Celery
我在一個網絡上擁有一切(它與另一個 docker-compose 文件中的另一個應用程序通信)。
但我不斷收到此錯誤:
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "db" (192.168.208.3) and accepting
TCP/IP connections on port 5000?
當我更改我的SQL_PORT=5432
(在 postgres 容器中運行的默認端口)時,上面的錯誤消失並且我的應用程序已啟動,但是在嘗試連接到 celery 或 shell 時出現問題,它說 db 未連接。
我必須使用 5000 因為在第二個 docker-compose 設置中的另一個應用程序上有另一個 postgres db。
我想我迷失在網絡的內部。 我很確定我想為我的數據庫使用暴露的 5000 端口。
version: "3.9"
services:
app:
build: .
command: python manage.py runserver 0.0.0.0:8000
container_name: app
environment:
- DEBUG=True
- PYTHONUNBUFFERED=1
- CELERY_BROKER=redis://broker:6379/0
- CELERY_BACKEND=redis://broker:6379/
- APP_BASIC_AUTH_PASSWORD=adPswd12*
- APP_BASIC_AUTH_USER=admin
- APP_TOKEN_AUTH=NHEC_UTILITY
- VTN_API_URL=vtn_app:8000
- VTN_API_TOKEN=NHECAPP_UTILITY
- SQL_PORT=5000
volumes:
- .:/code
ports:
- "9000:8000"
networks:
- app-web-net
depends_on:
- db
- celery-worker
- broker
app_test:
build: .
command: python manage.py test
container_name: app_test
environment:
- DEBUG=True
- PYTHONUNBUFFERED=1
volumes:
- .:/code
depends_on:
- db
db:
image: postgres:10
container_name: app_postgres
ports:
- 5000:5432
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: nhec
POSTGRES_USER: nhec
POSTGRES_PASSWORD: nhec
networks:
- app-web-net
celery-worker:
build: .
command: celery -A app worker -l DEBUG
depends_on:
- db
- broker
environment:
CELERY_BROKER_URL: redis://broker:6379/0
networks:
- app-web-net
broker:
image: redis:6-alpine
ports:
- 6379:6379
networks:
- app-web-net
volumes:
db_data: {}
networks:
app-web-net:
driver: bridge
這些ports
將在您的localhost
端口 5000 上公開 postgres 服務器,而不是向內部服務公開。
這是您可能會發現有用的相關答案。 在 Docker Compose 中更改 postgres 容器服務器端口
您的容器名稱實際上是app_postgres
,而不是 docker 撰寫中指定的db
:
container_name: app_postgres
您可以做的另一件事是將容器的名稱從app_postgres
更改為與其他應用程序的 docker 撰寫文件中的 postgres 不同的名稱。 兩個 postgres 實例都可以公開端口 5432 供您的應用程序使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.