django - 访问 Docker 镜像中的 Django STATIC 资源时出现 404 错误

标签 django docker static

这是我的 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/

相关文章:

python - 如何更改 settings.py 以从 SQLite3 数据库迁移到 mysql 数据库?

python - Django - Apache : get extended key usage field from x509 client certificate

mysql - Django - 未在 Docker 中创建 Mysql 数据库

javascript - 私有(private) AND 静态 AND 继承变量!?或类似

c# - 数据上下文应该是静态的吗?

python - URL 和副作用 (Django)

django - 如何使用 Apache、mod_wsgi 在 Django 项目中重新加载新更新?

Docker,Maven和settings.xml

mysql - Kubernetes-尽管存在服务,但无法从群集内的其他Pod连接到MySQL Pod

python - STATIC_URL 在 django 中不起作用