gpt4 book ai didi

nginx - 使用位于另一个 docker 容器中的 nginx 提供静态文件

转载 作者:行者123 更新时间:2023-12-04 12:28:15 27 4
gpt4 key购买 nike

刚开始,我看到了 this .但是他/她使用build ,我使用 image .

我有一个 docker-compose 文件,可以将我之前制作的图像拉到我的服务器上。

app:
restart: always
image: some-app-image:latest

nginx 配置
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 中制作卷并在容器运行时复制到静态文件中。然后使用 volumes_from 与 nginx 容器共享卷.如果您的应用程序 depends_on,这有点丑陋并且根本不起作用nginx。我会说这是绝对不可行 因为它在扩展您的应用程序容器时效果非常好。

将静态文件从主机映射到 nginx 容器的想法也不是最佳的。你将有一个额外的奇怪步骤来处理它们。

单独的静态容器

构建另一个 nginx 容器,仅在不同的虚拟主机上提供静态文件。 static.foo.bar .

使用 CDN

有大量 CDN 可供您放置静态文件,并且大多数框架都有用于处理这些的插件。我有一些项目正在这样做。效果很好。

使用 uWSGI

您可以使用 --static-map 为 uWSGI 提供静态文件。 .见 docs .这就是我最终做的,因为它既便宜又容易……而且在扩展方面很友好。那么你可能还需要使用 http-socket所以uWSGI改为使用http。

关于nginx - 使用位于另一个 docker 容器中的 nginx 提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com