这是我的 Django 项目的 Dockerfile:
FROM python:3.10.5-alpine
ENV PYTHONDONTWRITEBYTECODEBYDEFAULT=1
ENV PYTHONUNBUFFERED=1
RUN adduser --disabled-password appuser
USER appuser
WORKDIR /home/appuser/app
COPY requirements.txt .
USER root
RUN python -m pip install --no-cache-dir --disable-pip-version-check --requirement requirements.txt
USER appuser
COPY . .
ENTRYPOINT [ "./entrypoint.sh" ]
以及有关静态 Assets 的 Django 设置:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/'
和entrypoint.sh
#!/bin/sh
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic --no-input
gunicorn project.wsgi:application --bind=0.0.0.0:8000 --workers=4 --timeout=300 --log-level=debug --log-file=-
exec "$@"
当我启动容器时,我会进入容器并看到 static
文件夹已创建并填充,其中包含管理人员。
但是浏览 http://127.0.0.1:8000/admin
会打开管理员登录页面没有任何 CSS,我得到了很多 404
开发人员控制台中的错误。
我还将 STATIC_ROOT
更改为 /home/appuser/app/static/
并得到了相同的结果。
请协助。
最佳答案
您是否检查了创建的静态文件夹的权限?
我不得不手动更改文件夹的权限。
您可以尝试为 nginx 使用以下 Dockerfile:
FROM nginx:latest
RUN apt-get update && apt-get install -y procps
RUN mkdir -p /home/app/staticfiles
RUN chmod -R 755 /home/app/staticfiles
关于django - 访问 Docker 镜像中的 Django STATIC 资源时出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73182138/