我正在尝试对我的Django-postgres应用进行docker化。 我的Dockerfile是:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
我的docker-compose.yml是:
version: '3'
services:
web:
build: .
command: python app/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: password
和我的设置.py具有以下数据库代码:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': '0.0.0.0',
'PORT': '5432',
}
}
我的数据库和Web容器已启动,但运行时: docker-compose运行网络python manage.py migration 我收到错误消息:
psycopg2.OperationalError:无法连接到服务器:连接被拒绝 服务器是否在主机“ 0.0.0.0”上运行并接受 端口5432上的TCP / IP连接?
如何使我的容器进行交流?
答案 0 :(得分:3)
将HOST
更改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '5432',
}
}
0.0.0.0
不是有效的IP
,此外,您还需要使用service
名称进行连接,因为compose
会为您解决该问题