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