我有一个位于Nginx后面的Python Web应用程序,通过Gunicorn提供服务.
我已对其进行了配置,以便Nginx直接从磁盘上提供静态文件,并且只与Gunicorn通信以获取静态资产(如图像).
我的问题:
>将Web应用与静态资产结合在一起是一个好主意还是一个很大的“不”?
>如果我想在两个需要访问相同资产的服务器中部署我的容器,我怎样才能使静态资产像容器化应用程序一样可移植?
如果可能的话,我想拥有什么:
我想将我的应用程序放在一个容器中,我希望尽可能地将其变为便携式,而无需在额外的资源上花费更多资金,例如单独的服务器来保存图像(如数据库)
最佳答案
如果你知道你的应用程序永远都会拥有相同的静态资产,那么只需将它们与应用程序集成在一起并完成它.
但是事情发生了变化,所以当你需要它时我会建议采用Docker Volume Container方法:将你的静态资产放在DVC中并将DVC安装在主容器中,这样它就几乎只是“一个app容器”.你可以使用Docker Compose这样的东西:
appdata:
image: busyBox
volumes:
- /path/to/app/static
command: echo "I'm just a volume container"
app:
build: .
volumes_from:
- appdata
command: …
您可以通过使用引导脚本启动容器来进一步扩展,该脚本在启动时将初始静态文件复制到目标路径.这样,您的应用程序可以保证始终具有默认设置,但随着应用程序的增长,您可以添加更多静态文件.有关此示例,请提取官方Jenkins容器并阅读/usr/local/bin/jenkins.sh.