无法从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
答案 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