无法在docker中启动django项目

问题描述 投票:0回答:1

启动时,Redis 不起作用,因此缓存不起作用,因为我意识到没有与数据库的连接。我无法制作 loaddata 固定装置,Celery 也无法连接到 Redis。一般来说,没有任何作用。无论我找到多少关于如何创建这些文件的示例,到处都是这样完成的。

  1. Dockerfile:
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'
django postgresql docker redis celery
1个回答
0
投票

1.检查Docker Compose日志:

运行以下命令来检查容器的日志:

重击:

docker-compose logs

查找与数据库连接、Redis 或 Celery 相关的任何错误消息或问题。

2.数据库连接:

确保您的 Django 应用程序可以连接到 PostgreSQL 数据库。您可以使用以下命令访问容器内的 Django shell:

重击:

docker-compose exec site python manage.py DB shell

检查是否可以使用环境变量中提供的凭据连接到数据库。

3.Redis连接:

验证您的 Django 应用程序是否可以连接到 Redis。您可以在 Django 设置或视图中添加一些调试信息来检查 Redis 连接是否成功。

4.芹菜连接:

确保 Celery 可以连接到 Redis。您可以检查 Celery 日志中是否有与 Redis 连接相关的任何错误。运行以下命令来访问 Celery 容器日志:

重击:

docker-compose logs celery

5.赛程加载:

确保您的灯具放置正确,并且数据有效。您可以在容器内手动运行“loaddata”命令来检查是否有任何错误:

docker-compose exec site python manage.py loaddata site_blog/fixtures/posts.json

对其他灯具也重复此操作。

6.单独的命令:

不要在 Dockerfile 中的单个 CMD 指令中运行所有命令,而是尝试将它们分开。这将帮助您确定导致问题的特定命令。

Dockerfile:

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

7.调试:

您可以向 Django 设置或代码添加一些打印语句或日志记录,以调试问题发生的位置。

检查完这些步骤后,您应该可以更好地了解问题所在。如果您在执行这些步骤时遇到特定的错误消息或问题,请提供更多详细信息,以便我进一步为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.