django - 我在谷歌云运行中的 docker 图像不读取 css 文件
问题描述
我使用由 docker 组成的 Django 创建我的网站。
当我编译这个 docker 图像时,应用程序会显示一个带有 CSS 的网页,另一方面,当我在 google cloud run 上部署这个 docker 图像时,它只显示 HTML 文件,我的意思是它不包含 CSS 文件,所以它显示只是文字。
有谁知道为什么会这样?如果有人知道,请告诉我如何用样式展示我的网站。
解决方案
collectstatic
在生产中是必需的,但在开发中不是必需的。这个想法是在项目的根目录创建一个静态文件夹,nginx(或您正在使用的任何服务器)可以直接访问它。使用 时Docker
,一种常见的方法是包含一个入口点。
为此,请将以下内容添加到您的Dockerfile
:
ENV APP_HOME=/code # replace with your container's root dir
COPY ./entrypoint.sh $APP_HOME
ENTRYPOINT ["/code/entrypoint.sh"]
entrypoint.sh
看起来像这样:
#!/bin/sh
set -e
# python entry point commands go here
python manage.py migrate
python manage.py collectstatic --no-input
exec "$@"
还要确保你有类似的东西
STATIC_URL = "/staticfiles/"
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
在你的settings.py
其余的取决于您的服务器设置(nginx、apache 或您正在使用的任何东西),但可能看起来像
location /static/ {
root /code/static/;
autoindex off;
}
在 Nginx 中。
我发现一个非常有用的工具是whitenoise。只需按照设置指南进行操作,您就可以跳过 nginx 的内容。
推荐阅读
- python - VirtualEnv - 已安装本地包但未找到模块
- javascript - 类和反应组件中的 this 关键字行为(箭头函数与常规函数)
- python - 在 jupyter 中使用 matplotlib 绘图:跨单元格分离代码的效果
- java - 在休眠中添加一个懒惰的孩子
- javascript - 无法在主页中使用自定义组件 - 打字稿错误
- python - python untar linux 等价物
- python - 将大型 json 文件读入 pandas 数据帧
- xamarin - Xamarin Forms Image 未显示
- c# - 在 C# 中将 byte[] 转换为类的实例
- c++ - 从多个 C/C++ 线程调用 Haskell