我正在尝试从我的 docker 容器连接到本地 postgresql 服务器。 我使用的是 Ubuntu 22.04.4。
这是我的
docker-compose.yml
。
version: '3'
services:
...
backend:
build:
context: '.'
dockerfile: 'Dockerfile'
ports:
- '8000:80'
- '8001:8001'
env_file:
- .env-docker
image: backend-django:latest
...
这是我的
.env-docker
。
DEBUG=True
SECRET_KEY=******
DATABASE_USER=postgres
DATABASE_NAME=postgres
DATABASE_PASSWORD=postgres
DATABASE_HOST=host.docker.internal
DATABASE_PORT=5432
这是我的
Dockerfile
。
FROM python:3.11
ENV PYTHONBUFFERED 1
...
EXPOSE 8000
CMD ["gunicorn", "-b", "0.0.0.0", "config.wsgi"]
它在 Windows 中可以运行,但现在不能在 Ubuntu 中运行。
与postgresql有关吗? 我使用的是相同版本的 postgresql,我可以使用 PgAdmin 连接到本地 postgresl。
如何从 Docker 容器连接到 postgresql 服务器?
将其添加到
docker-compose.yml
中的容器中。
extra_hosts:
- "host.docker.internal:host-gateway"
如果不断出现错误,请更改
postgresql.conf
中的listen_addresses
listen_addresses = '*'
并将这些行添加到您的
pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
host all all ::/0 scram-sha-256
此后,重新启动 postgresql 服务。
sudo systemctl restart postgresql