【发布时间】:2021-04-26 00:33:24
【问题描述】:
我在使用 django/postgres 应用程序(使用 sqlalchemy)运行 docker-compose up 时遇到问题。
在本地运行它时一切都很好,但是当我尝试对它进行竞争时(使用 Docker)我遇到了一个错误:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) 无法连接到服务器:连接被拒绝。服务器是否在主机“127.0.0.1”上运行并接受端口 5432 上的 TCP/IP 连接?
由于某种原因,应用没有连接到数据库。
我的docker-compose.yml:
version: "3.9"
services:
db:
image: postgres:9.6
environment:
- POSTGRES_DB=my database
- POSTGRES_USER=my user
- POSTGRES_PASSWORD=my password
web:
build: .
command: python3 manage.py runserver 127.0.0.1:8080
volumes:
- .:/code
ports:
- "8080:8080"
depends_on:
- db
我的 Dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip3 install --trusted-host pypi.python.org -r requirements.txt
COPY . /code/
我的引擎:
engine = create_engine("postgresql://my user:my password@127.0.0.1:5432/my database")
Django 设置.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'my database',
'USER': 'my user',
'PASSWORD': 'my password',
'HOST': '127.0.0.1',
'PORT': 5432,
}
}
谁能告诉我我在哪里犯错了?
编辑:
我尝试了 Max 的解决方案,但没有任何改变。我在错误引用中发现显示了我使用引擎的行。那么我也应该以某种方式修改我的引擎吗?
【问题讨论】:
-
您应该在网络中连接您的容器。 See here 或许你还得调整数据库 url 以匹配容器名称或 ip
标签: python django docker docker-compose sqlalchemy