在启动时,Redis不工作,因此缓存不工作,因为我意识到没有连接到数据库.我不能做loaddata fixtures,Celery也不能连接到Redis.一般来说,没有什么工作. 不管我找到多少关于如何创建这些文件的例子,到处都是这样做的.

  1. 文档文件:
FROM python:3.11

WORKDIR /app

COPY . .

RUN pip install -r requirements.txt

CMD python manage.py migrate \
    && python manage.py loaddata site_blog/fixtures/posts.json \
    && python manage.py loaddata site_blog/fixtures/post_category.json \
    && python manage.py loaddata site_blog/fixtures/comments.json \
    && python manage.py loaddata users/fixtures/users.json \
    && python manage.py makemigrations \
    && python manage.py migrate \
    && python manage.py runserver 0.0.0.0:8000
  1. Docker-compose.yml:
version: '3'
services:
  postgres-db:
    image: postgres
    environment:
      POSTGRES_USER: db_mp_blog_username
      POSTGRES_PASSWORD: db_mp_blog_password
      POSTGRES_DB: db_mp_blog
    ports:
      - "5432:5432"
    restart: always

  redis:
    image: redis
    restart: always
    ports:
      - "6379:6379"

  site:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    depends_on:
      - postgres-db
      - redis
    environment:
      DB_NAME: "db_mp_blog"
      DB_USER: "db_mp_blog_username"
      DB_PASSWORD: "db_mp_blog_password"
      DB_HOST: "postgres-db"
      DB_PORT: 5432
      CELERY_BROKER_URL: 'redis://127.0.0.1:6379'
      CELERY_RESULT_BACKEND: 'redis://127.0.0.1:6379'
      SECRET_KEY: 'django-insecure-c467_p2n3g4ni%yq_ebaqe1j2=!ozmn=zvgh8i23uzos&9p3pc'
    restart: always

  celery:
    build: .
    command: celery -A blog worker --loglevel=info
    depends_on:
      - site
      - redis
      - postgres-db
    environment:
      DB_NAME: "db_mp_blog"
      DB_USER: "db_mp_blog_username"
      DB_PASSWORD: "db_mp_blog_password"
      DB_HOST: "postgres-db"
      DB_PORT: 5432
      CELERY_BROKER_URL: 'redis://127.0.0.1:6379'
      CELERY_RESULT_BACKEND: 'redis://127.0.0.1:6379'
      SECRET_KEY: 'django-insecure-c467_p2n3g4ni%yq_ebaqe1j2=!ozmn=zvgh8i23uzos&9p3pc'

推荐答案

您应该在您的Docker合成文件中创建一个网络,并将所有服务添加到该网络中.然后,根据服务修改您的Docker compose 中的地址.例如,更改

CELERY_BROKER_URL: 'redis://127.0.0.1:6379'

CELERY_BROKER_URL: 'redis://redis:6379'

Django相关问答推荐

Django www.example.com从常量列表中删除值

Django相关对象引用模板

Django/SendGrid-密码重置-发件人地址与验证的发件人身份不匹配.";

如何在Django中获取标记<;输入>;的';值';属性?

""关系"core_Boundary_summary的列user_id中的空值"违反了非空约束|失败行包含(2,title,string,null)

在模板中自动添加变量

如何组织 Django REST Framework url

Django ORM:子查询上的文本聚合器

在模板中调用 FileField 对象会呈现不正确的路径

Django 模型中的隐藏字段

相关字段查找无效:​​icontains

将网络测功机添加到 Heroku django 应用程序时如何克服Coudn't find that formation错误?

如何在 Django 中向 ChoiceField 添加class?

Django查询在哪里

django 有条件地过滤对象

使用 Gunicorn 运行 Django - 最佳实践

Django 模板和变量属性

Django 覆盖模型 Clean() 与 Save()

django 在 unittest 测试中设置环境变量

Django Rest Framework 序列化程序中的循环依赖