docker化后,Django无法连接Postgres

时间:2019-04-12 22:47:54

标签: django postgresql docker

我一直试图将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,
    }
}

我怀疑我的网络正在破坏一切,但是我似乎并没有真正找到合适的关键字来搜索我不了解的内容。

0 个答案:

没有答案