无法从我的 docker 容器连接到本地 postgresql 服务器

问题描述 投票:0回答:1

我正在尝试从我的 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 服务器?

python django postgresql docker ubuntu
1个回答
0
投票

将其添加到

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
© www.soinside.com 2019 - 2024. All rights reserved.