首页 > 解决方案 > Django Dockerized 与 Celery 和 Postgres

问题描述

我正在努力为我的 Django 项目创建一个 docker 映像。我使用 Celery 和 Redis 作为代理和 Postgres。创建容器时出现此错误: django.db.utils.OperationalError: could not translate host name "db" to address: No address associated with hostname

Dockerfile

FROM python:3.6

ENV PYTHONUNBUFFERED 1
ENV DJANGO_ENV dev
ENV DOCKER_CONTAINER 1

COPY ./requirements.txt /code/requirements.txt
RUN pip install -r /code/requirements.txt

COPY /src/ /code/
WORKDIR /code/

EXPOSE 8000

码头工人-compose.yml

version: "3"

services:
  db:
    image: postgres
    expose:
      - "5432"

  redis:
    image: "redis:alpine"
  web:
    build: .
    command: bash -c "python /code/manage.py migrate --noinput && python /code/manage.py runserver 0.0.0.0:8000"
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis

  celery:
    build: .
    command: celery -A core worker -l info
    depends_on:
      - db
      - redis

  celery-beat:
    build: .
    command: celery -A core beat -l info
    depends_on:
      - db
      - redis

设置.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

任何想法我做错了什么?我很确定它与 settings.py 中的数据库配置有关,因为在我更改它之前它工作正常,并且我能够运行我的应用程序并测试 celery。

标签: pythonpostgresqldockerdocker-composedjango-celery

解决方案


推荐阅读