【发布时间】:2020-01-27 16:28:44
【问题描述】:
在我的 docker-compose 应用程序中,我有 2 个容器、1 个 nginx 和 1 个 python 脚本 crontab,它们更新了 nginx/html 文件夹中的一些文件。 当我声明时使用 docker-compose
volumes:
- shared-volume:/usr/share/nginx/html/assets/xxx:ro
nginx 镜像中的初始文件被复制到共享卷中。
现在我正在尝试将应用程序移动到 k8s,但是当我使用共享卷时,我发现 nginx/html 中的初始文件丢失了。
所以问题是,是否可以将初始文件从我的 nginx 映像复制到共享卷?如何?
____________________________编辑______________________________________
澄清一下,我是 k8s 的新手,我们通常使用 VM 运行更新 nginx 资产文件夹的脚本。使用 docker-compose 我使用这样的东西:
version: '3.7'
services:
site-web:
build: .
image: "site-home:1.0.0"
ports:
- "80:80"
volumes:
- v_site-home:/usr/share/nginx/html/assets/:ro
site-cron:
build: ./cronScript
image: "site-home-cron:1.0.0"
volumes:
- v_site-home:/app/my-assets
volumes:
v_site-home:
name: v_site-home
现在我开始编写部署(使用持久卷?因为据我所知,即使有持久卷,在这种情况下,有状态集也没有用)将我的 docker-compose 转换为 k8s。实际上,我们不能将任何公共云用于安全策略(数据必须在我们国家,现在没有大公司有这个选项)。所以想法是在多个裸机服务器上运行 vanilla k8s,并使用像这样的非常简单的应用程序开始迁移。我尝试在一个 pod 中使用 2 个 docker、replica:1 和一个空卷。在这种情况下,我看到最初应用程序的 nginx 文件夹是空的,我需要等待 crontab 更新才能看到我的结果。所以这是第一个问题。
现在我阅读了您的回答,显然我还有其他疑问。拆分吊舱是否更好,所以容器用 1 个吊舱?具有持久卷的部署是这样吗?在这种情况下,我遇到了老问题,如何查看初始 nginx 资产文件?非常感谢您的帮助!
【问题讨论】:
-
向我们展示真正的 yaml 文件。我猜您使用单独的 pod 进行部署。请注意:您可以将 nginx 和 python 应用程序部署到一个带有两个容器的 pod 中。
-
看我的回答!谢谢
-
你不应该回答你自己的问题,而只是为了澄清你自己的问题。您需要直接更新您的原始问题。
标签: nginx kubernetes volume