我一直试图将django容器连接到postgres容器,但它只是不想连接。我的Django项目的dockerfile
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN python catconstruct/manage.py migrate
和我的docker-compose:
version: "3"
services:
db:
image: postgres
hostname: 'db'
expose:
- "5432"
ports:
- "5432:5432"
kittenkube:
build: .
command: python catconstruct/manage.py runserver 0.0.0.0:80
restart: on-failure
volumes:
- .:/code
environment:
VIRTUAL_HOST: kk.example.org
LETSENCRYPT_HOST: kk.example.org
LETSENCRYPT_EMAIL: kk@example.org
expose:
- 80
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5432"]
interval: 30s
timeout: 10s
retries: 5
networks:
default:
external:
name: nginx-proxy
Postgres似乎运行得很好,因为我可以调用docker-compose up db,然后进入psql就可以了。我添加了主机名,暴露和端口参数,试图对其进行修复,其他每个在线示例似乎都只使用image参数。
尝试进行故障排除我通常会先调用docker-compose up -d db(以确保数据库已启动并正在运行),然后再调用docker-compose up --build -d Kittenkube,然后在迁移时由于错误而出错< / p>
django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known
这是来自settings.py的我的数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
我怀疑我的网络正在破坏一切,但是我似乎并没有真正找到合适的关键字来搜索我不了解的内容。