什么是提供静态和动态内容的docker模式

hbr*_*rls 5 docker

我有一个简单的python/flask应用程序.就像这样container

/var/www/app/
  appl/
    static/
      ...
    app.py
  wsgi.py
Run Code Online (Sandbox Code Playgroud)

在使用docker之前,我曾经让nginx直接提供静态文件.像这样:

location /static {
    alias  /var/www/www.domain.com/appl/static;
}

location / {
    uwsgi_pass unix:///tmp/uwsgi/www.domain.com.sock;
    include uwsgi_params;
}
Run Code Online (Sandbox Code Playgroud)

但现在静态文件位于容器内部,nginx无法访问.

我可以想到两种可能的解决方案:

  1. 像以前一样在容器内启动一个nginx,并让主机nginx使用像8000这样的端口与容器nginx进行通信

  2. 安装(host)/var/www/www.domain.com/static(container)/var/www/static和复制的所有静态文件run.sh

码头工人更喜欢什么?

Kev*_*ist 1

我更喜欢第一个解决方案,因为它符合构建12 要素应用程序的第 7 要素:公开端口上的所有服务。通过 Nginx 运行两次请求肯定会产生一些开销,但可能还不足以担心(如果只是向池中添加更多容器)。在容器启动后使用自定义运行脚本执行主机端工作将使使用 Docker 生态系统中的工具扩展应用程序变得非常困难。