'Connection refused'在 docker 中运行 django/postgres 项目时



我正在做一个Django/Postgres项目,目前正在尝试dockerize。Postgresql在我的电脑上一直运行得很好,但现在我在docker上旋转它时遇到了问题。我得到这个错误:

web_1|django.db.utils.OperationalError:无法连接到服务器:连接被拒绝

服务器是否在主机"上运行;localhost";(127.0.0.1(并接受

端口5432上的TCP/IP连接?

我尝试了很多网上建议的解决方案,但都没有解决我的问题。

以下是所有相关代码:

.yml文件

version: '3.8'
services:
web:
build:
context: ./web
network: host
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./web/:/usr/src/web/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- web_db
web_db:
image: postgres:12.5-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password 
- POSTGRES_DB=db_name
volumes:
postgres_data:

env文件

SECRET_KEY=secret
DEBUG=1
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
SQL_ENGINE=django.db.backends.postgresql_psycopg2
SQL_DATABASE=db_name
SQL_USER=username
SQL_PASSWORD=password
SQL_HOST=localhost
SQL_PORT=5432

设置.py

DATABASES = {
"default": {
"ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.postgresql_psycopg2"),
"NAME": os.environ.get("SQL_DATABASE", "db_name"),
"USER": os.environ.get("SQL_USER", "username"),
"PASSWORD": os.environ.get("SQL_PASSWORD", "password"),
"HOST": os.environ.get("SQL_HOST", "localhost"),
"PORT": os.environ.get("SQL_PORT", ""),
}
}

以下是我的配置:

sudo nano/var/lib/docker/volumes/project_postgres_data/data/pg_hba.conf

#TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust
#IPv4 local connections:
host    all             all             127.0.0.1/32            trust
#IPv6 local connections:
host    all             all             ::1/128                 trust
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

host all all all md5 

sudo nano/var/lib/docker/volumes/project_postgres_data/_data/postgresql.conf

listen_addresses = '*'
#port = 5432

所有的配置似乎都检查出来了,所以我不知道为什么连接失败。有什么想法吗?

附言:我会用任何需要的额外信息更新这个问题。

在环境文件中使用SQL_HOST=web_db而不是SQL_HOST=localhost

最新更新