gpt4 book ai didi

docker-compose 退出 docker-compose

转载 作者:行者123 更新时间:2023-12-02 18:26:44 25 4
gpt4 key购买 nike

我有构建 4 个容器的简单 docker-copose.yml。容器在 EC2 上运行。
docker-compose change ~ 每天两次在 master 分支上,每次更改我们都需要在生产环境中部署新容器

这就是我正在做的事情:

docker-compose down --rmi all
git pull origin master
docker-compose build -d

我正在删除图像以避免冲突,这样一旦我开始服务,我就会有新的图像

这个过程需要我大约 1 分钟,
启动 docker-compose 的最佳实践是什么,有什么改进的建议吗?

最佳答案

您可以执行在 Docker 中本地显示的命令集,而无需在部署过程中使用 git 或其他源代码控制工具。

每当您对源代码树进行更改时,构建一个新的 Docker 镜像并将其推送到 Docker 存储库。这可以是 Docker Hub,或者如果您已经在 AWS 上,则可以是 Amazon ECR。每个构建都应该有一个唯一的图像标签,例如源代码管理提交 ID 或时间戳。您可以设置一个持续集成工具来自动为您完成所有这些工作。

一旦你有了这个,你的 docker-compose.yml 文件需要使用要部署的版本号进行更新。如果您只有一个要部署的图像,您可以直接使用 Compose variable substitution 来填充它

image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage:${TAG:-latest}

如果您有多个图像,您可以设置多个环境变量或生成一个更新的 docker-compose.yml 文件,其中填充了值,但您需要在部署时一起了解所有图像版本。

现在当你去部署它时,你只需要运行
TAG=20200317.0412 docker-compose up -d

设置环境变量并触发 Compose。 Compose 将看到您尝试为该容器运行的镜像与已经运行的镜像不同,拉取更新的镜像并为您替换容器。您无需手动移除旧容器或停止整个堆栈。

如果 git 现在是您工作流程的一部分,那可能是因为您正在将应用程序代码安装到容器中。您还需要删除覆盖图像中内容的任何 volumes:。还要确保您在 CI 系统(因此您正在测试要部署到生产的实际镜像)和开发中(类似地)进行此更改。

使用 Kubernetes(或 Amazon EKS)之类的集群管理系统,这一特定任务变得稍微容易一些,尽管它在其他地方带来了许多其他复杂性。在 Kubernetes 中,您需要将更新的部署规范发送到 Kubernetes API 服务器,但您无需直接通过 ssh 访问目标系统即可执行此操作,只需要知道您正在更新的一个镜像的特定版本以及多个副本您可以获得零停机升级。在此设置中,基本上需要使用 Docker 存储库和每次构建使用唯一的镜像标记:镜像是代码进入集群的唯一方式,更改镜像标记字符串是触发代码重新部署的原因。

关于docker-compose 退出 docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60714540/

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