Dockerized Nginx和Django,如何提供静态文件



我使用Docker来容器化我的Django环境,它看起来像这样(简化了一点):

  1. Nginx(官方图片)docker容器
  2. 一个Ubuntu docker容器,包含uwsgi和Django

Nginx容器正在服务uwsgi很好,但我没有找到一种方法来服务静态文件。

upstream proceed {
    server proceed:8000;
}
 server {
    listen 80;
    server_name mydomain.com;
    location /static {
        alias /srv/www/proceed/static/; # What to do here? 
    }
    location / {
        uwsgi_pass proceed;
        include uwsgi_params;
    }
}

问题:从另一个容器提供静态文件的最好方法是什么?最好是不涉及体积的解决方案。

如前所述,您需要在容器之间共享卷。

你的django Dockerfile需要包含卷定义

FROM ubuntu 
....
VOLUME  /srv/www/proceed/static # there is path to your static

当你运行nginx容器时,你需要添加volumes-from参数

docker run nginx --volumes-from django

然后你的nginx配置将工作良好。

注意!指向django容器和nginx容器的静态内容的路径必须相同!

最新更新