docker容器无法连接到本地Postgres

时间:2020-02-26 22:55:53

标签: postgresql docker flask docker-run

无法从Docker容器连接到Postgres。 我不希望用户docker-compose并创建一个Postgres容器,已经运行了Postgres应用程序。我认为容器postgres和更好地使用系统是一个坏主意。

OSX,Postgres10,烧瓶

我已经做

postgresql.conf

listen_addresses = '*'  
port = 5432

pg_hba.conf

host    all             all             0.0.0.0/0               trust

我将信任用于任何结果,但没有效果。

Dockerfile

FROM python:3.8-alpine
RUN apk update \
    && apk add --virtual build-deps gcc musl-dev \
    && apk add python3-dev \
    && apk add postgresql-dev \
    && apk add jpeg-dev zlib-dev libjpeg \
    && pip install --upgrade pip
ENV PYTHONUNBUFFERED 1 \
    && FLASK_APP app.py
#EXPOSE 5000 5432
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
CMD ["./bin/run.sh"]

./ bin / run.sh

#!/bin/sh
#python run.py
source venv/bin/activate
set -e
flask db upgrade
exec gunicorn -b --workers 4 --access-logfile --error-logfile run:app :5000

我尝试使用的“ docker run”命令:

docker run --rm -e SQLALCHEMY_DATABASE_URI=postgresql://postgres:postgres@0.0.0.0:5432/my_db --net=host -p 5000:5000 my_container:v0.1

命令导致错误

...
psycopg2.OperationalError: could not connect to server: Connection refused
        Is the server running on host "0.0.0.0" and accepting
        TCP/IP connections on port 5432?

命令将我连接到Postgres

psql -U postgres -h 0.0.0.0

1 个答案:

答案 0 :(得分:0)

尝试连接到主机“ 0.0.0.0”在技术上是错误的。 (地址0.0.0.0用于其他目的,不能连接到...)

您是否尝试使用postgres容器ip地址而不是“ 0.0.0.0”进行连接?

您可以通过以下命令获取postgres容器ip地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_of_postgres_container