【发布时间】:2019-12-02 09:04:51
【问题描述】:
我使用 Docker Compose 以及将静态文件夹复制到 /static 的 Dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY static /static/
COPY . /code/
在我使用的设置文件中:
if env == "dev":
DEBUG = True
else:
DEBUG = False
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static/"),
'/static'
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
静态文件在 dev 中工作,但是当我将 env 更改为 prod 时,我开始收到 404 错误。
所以你看出问题了吗?
【问题讨论】:
-
Django 的静态文件在生产环境中不起作用 (docs.djangoproject.com/en/2.2/howto/static-files/…) 你最好为此配置 nginx/apache/...。
-
STATICFILES_DIRS是您的静态文件的位置在您的代码存储库中,Django 应该从那里为collectstatic获取它们。所以这个设置是错误的,它不应该是/static(通常,如果在你的应用程序的“静态”文件夹中,你根本不需要设置它)。同时向我们展示你的 apache/nginx 配置。 -
注意:我已经写了一个blog post,介绍了如何使用白噪声和 CDN 设置静态文件(针对 AWS,但包含有用的解释,可帮助您了解整个事情的工作原理)。跨度>
标签: django django-staticfiles django-static