Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 加点芹菜和芹菜的Django_Python_Postgresql_Docker_Docker Compose_Django Celery - Fatal编程技术网

Python 加点芹菜和芹菜的Django

Python 加点芹菜和芹菜的Django,python,postgresql,docker,docker-compose,django-celery,Python,Postgresql,Docker,Docker Compose,Django Celery,我正在努力为我的Django项目创建一个docker形象。我用芹菜和Redis做经纪人和Postgres。 创建容器时出现以下错误: django.db.utils.OperationalError:无法将主机名“db”转换为地址:没有与主机名关联的地址 Dockerfile FROM python:3.6 ENV PYTHONUNBUFFERED 1 ENV DJANGO_ENV dev ENV DOCKER_CONTAINER 1 COPY ./requirements.txt /co

我正在努力为我的Django项目创建一个docker形象。我用芹菜和Redis做经纪人和Postgres。 创建容器时出现以下错误:
django.db.utils.OperationalError:无法将主机名“db”转换为地址:没有与主机名关联的地址

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
docker-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中的数据库配置有关,因为在我更改它之前,它工作正常,我可以运行我的应用程序并测试芹菜。

我认为问题可能是Postgres没有启动。取决于不幸的是,不要等到博士后将正确设置。能否尝试在
web
service命令中添加
sleep 20
?使用
docker ps
检查容器的结果名称,它还应包含文件夹名称。使用它作为主机名。我在其他地方发现了问题。事实证明,我有一些容器使用db服务和旧postgress,它使用的是旧数据。日志顶部有错误,但在终端中很难注意到。必须运行
docker compose down
来清除数据库,下一次构建时一切都按预期进行我认为问题可能是Postgres没有启动。取决于不幸的是,不要等到博士后将正确设置。能否尝试在
web
service命令中添加
sleep 20
?使用
docker ps
检查容器的结果名称,它还应包含文件夹名称。使用它作为主机名。我在其他地方发现了问题。事实证明,我有一些容器使用db服务和旧postgress,它使用的是旧数据。日志顶部有错误,但在终端中很难注意到。必须运行
docker compose down
以清除数据库,并且在下一次构建中一切都按预期进行