启动时,Redis 不起作用,因此缓存不起作用,因为我意识到没有与数据库的连接。我无法制作 loaddata 固定装置,Celery 也无法连接到 Redis。一般来说,没有任何作用。无论我找到多少关于如何创建这些文件的示例,到处都是这样完成的。
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
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-compose logs
查找与数据库连接、Redis 或 Celery 相关的任何错误消息或问题。
确保您的 Django 应用程序可以连接到 PostgreSQL 数据库。您可以使用以下命令访问容器内的 Django shell:
重击:
docker-compose exec site python manage.py DB shell
检查是否可以使用环境变量中提供的凭据连接到数据库。
验证您的 Django 应用程序是否可以连接到 Redis。您可以在 Django 设置或视图中添加一些调试信息来检查 Redis 连接是否成功。
确保 Celery 可以连接到 Redis。您可以检查 Celery 日志中是否有与 Redis 连接相关的任何错误。运行以下命令来访问 Celery 容器日志:
重击:
docker-compose logs celery
确保您的灯具放置正确,并且数据有效。您可以在容器内手动运行“loaddata”命令来检查是否有任何错误:
docker-compose exec site python manage.py loaddata site_blog/fixtures/posts.json
对其他灯具也重复此操作。
不要在 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
您可以向 Django 设置或代码添加一些打印语句或日志记录,以调试问题发生的位置。
检查完这些步骤后,您应该可以更好地了解问题所在。如果您在执行这些步骤时遇到特定的错误消息或问题,请提供更多详细信息,以便我进一步为您提供帮助。