我在Ubuntu 17.04 Zesty上使用docker 17.05.0-cs edge。我有一个我建立的gunicorn / Django应用程序here。在停靠之前它运行正常,但是gunicorn在docker build
之后无法看到静态文件。这是Dockerfile
:
# Dockerfile
# FROM base image to build upon
FROM phusion/baseimage
# RUN install python and pip
RUN apt-get update
RUN apt-get install -y python python-pip python-dev
# ENV set environment directory tree
ENV PROJECT=mysite
ENV CONTAINER_HOME=/opt
ENV CONTAINER_PROJECT=$CONTAINER_HOME/$PROJECT
# move to project WORKDIR
WORKDIR $CONTAINER_PROJECT
# COPY project to container directory
COPY . $CONTAINER_PROJECT
# RUN pip and install requirements
RUN pip install -r requirements.txt
# COPY start.sh into known container location
COPY start.sh /start.sh
# EXPOSE port 8000 to allow communication to/from server
EXPOSE 8000
# CMD execute start.sh to start the server running.
CMD ["/start.sh"]
# done!
该应用运行并显示该页面,有趣,甚至应用css
模板,同时说它无法找到bootstrap.css
或bootstrap.js
。它不会执行脚本来切换菜单。当前的模板只是我初始构建的一个工件,新的模板甚至不能使用bootstrap.js
我很确定。它运行但切换不起作用,我知道它是bootstrap.js
的一个特征。这是sudo docker run -it -p 8000:8000 dockerized_site
:
Starting Gunicorn.
[2017-06-07 00:38:56 +0000] [1] [INFO] Starting gunicorn 19.6.0
[2017-06-07 00:38:56 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
[2017-06-07 00:38:56 +0000] [1] [INFO] Using worker: sync
[2017-06-07 00:38:56 +0000] [9] [INFO] Booting worker with pid: 9
[2017-06-07 00:38:56 +0000] [10] [INFO] Booting worker with pid: 10
[2017-06-07 00:38:56 +0000] [11] [INFO] Booting worker with pid: 11
Not Found: /js/bootstrap.min.js
Not Found: /js/jquery.js
Not Found: /js/bootstrap.min.js
Not Found: /favicon.ico
我将静态文件网址格式附加到urls.py
,我很确定这与容器构建或settings.py
有关。也许我需要为静态文件添加一个环境目录?当然,任何帮助都是值得赞赏的。
答案 0 :(得分:1)
参见https://docs.djangoproject.com/en/1.11/howto/static-files/deployment/ 用于静态文件部署。
但您可能希望使用Nginx或Apache等Web服务器来提供静态文件。您不应该使用Gunicorn来提供静态文件,特别是在生产中。 Gunicorn是一个用于动态内容的WSGI服务器。
答案 1 :(得分:1)
这是你的问题:
您的css
工作正常:
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
您的js
无效(404):
<script src="{% static '/js/jquery.js' %}"></script>
看到区别?
/ js
路径中的前导/
这可以解决您的问题:
<script src="{% static 'js/jquery.js' %}"></script>
我克隆了您的仓库并修复了模板,我已经解决了您的问题。请修复其他<script>
s