使用位于另一个泊坞窗容器中的nginx提供静态文件
刚开始,我已经看到了这一点 。 但是他/她使用build
,而我使用image
。
我有一个docker-compose文件,它将我以前制作的图像拖到我的服务器上。
app: restart: always image: some-app-image:latest
nginxconfiguration
location /static/ { root /data/app/web_interface; <--- this exists in some-app-image container }
通常情况下,我会将一个卷装载到包含静态文件的应用程序映像上。
但是,由于应用程序容器本身具有静态文件,因此这变得多余。
所有的nginx容器需要做的是“同行”到应用程序容器中,并提供这些静态文件。 喜欢:
location /static/ { root http://app:8000/web_interface; }
要么
location /static/ { root app/web_interface; }
有没有办法从nginx容器中提供位于另一个容器中的静态文件?
我过去所有的想法:
从应用程序共享docker卷到nginx
您可以在应用程序的Dockefile
创build一个卷,并在容器运行时复制Dockefile
文件。 然后使用volumes_from
与nginx容器共享卷。 这是一种丑陋,如果你的应用程序depends_on
nginx,根本不起作用。 我会说这绝对是一个不行,因为它扩大你的应用程序容器时,它的工作非常糟糕。
将主机的静态文件映射到nginx容器的想法也不是最佳的。 你会有一个奇怪的步骤来处理它们。
独立的静态容器
构build另一个仅用于不同虚拟主机上的静态文件的nginx容器。 static.foo.bar
。
使用CDN
有大量的CDN,你可以把你的静态文件,大多数框架有插件来处理。 我有一些项目这样做。 很好用。
使用uWSGI
您可以使用--static-map
来为uWSGI提供静态文件。 看文档 。 这是我最终做的,因为这是一个便宜,容易…和友好的,当涉及到缩放。 那么你可能也需要使用http-socket
所以uWSGI会说http。