gpt4 book ai didi

docker - Gitlab CI - 在开发服务器上部署 docker-compose.yml,测试并部署到 PD

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

我是 Gitlab CI 的新手,但开始阅读文档。在实际构建它之前,我想检查按计划进行是否是个好主意:

我在 Gitlab 存储库中有一个 docker-compose 文件和几个 Dockerfile。 docker-compose 文件由许多相互依赖的图像组成。我们有两台 docker 服务器,一台 prod 服务器 和一台 dev 服务器。我们希望实现以下目标:

  1. 通过触发器(手动或提交),我们希望(通过 docker-compose down)停止运行开发服务器
  2. 上的容器
  3. 检查最新/当前版本的存储库(包含 docker-compose.yml 和 Dockerfiles)
  4. 启动开发服务器上的所有容器(通过docker-compose up -d)
  5. [稍后,需要定义]开始测试
  6. 如果测试成功或通过手动交互(单击按钮),则环境应部署在生产服务器上(即 生产服务器 ).

有什么反对这种方法的吗?我目前遇到的主要问题是,我不知道如何“使用”/“引用”我现有的服务器。所以我不想采用通常的方法(创建一个新的隔离 docker 容器,测试软件并丢弃),但我想按照上面的描述进行操作。

感谢您的帮助!

编辑

在做了一些额外的研究之后,我觉得有必要添加一些东西:据我了解,通常在 CI/CD 管道期间启动一个 Docker 容器来测试您的应用程序。由于我实际上正在测试一整堆容器/一个对 docker 主机系统有特定要求的 docker-compose 文件,所以我需要在 docker 中使用类似 docker 的东西并在那里部署我的堆栈。但是,在第一阶段我想使用现有的 docker 服务器,因为我的“堆栈”需要调整以便从头开始动态创建。

容器对主机系统有要求的原因是,我们在这种情况下使用 Docker 作为基础设施工具。因此,我们使用 Docker 容器而不是 VM。结果是一个完整的企业应用程序环境,其中不同的服务(管理界面、存储库等)是单独的容器。

希望这对您有所帮助。如果有什么不清楚的地方,尽管问。

最佳答案

您描述的设置对于运行集成测试非常典型,您或多或少地启动了完整的系统以进行测试。有不同的方法可以解决这个问题,但这是我的看法:

1) 使用单独的 GitLab CI 构建服务器 (gitlab-ci-runner) 而不是开发服务器。它可以是任何类型:shell、docker 等。通过这种方式,您可以将部署环境与构建服务器分开。

2) 在您的 CI 管道中,在构建所有代码、进行单元测试等之后,添加一个手 Action 业 (https://docs.gitlab.com/ee/ci/yaml/README.html#when-manual) 以启动对开发/暂存服务器的集成测试

3) 手 Action 业将简单地通过 secret 变量 (https://docs.gitlab.com/ee/ci/variables/README.html#secret-variables) 中的凭据通过 ssh 连接到开发服务器。然后它将执行 docker-compose down, docker-compose pull, docker-compose up 假设最新的 docker 镜像已经构建在构建中阶段并部署到私有(private) docker 注册表。

4) 管道中的另一个作业开始测试

5) 一旦测试完成,你可以有另一个阶段,它只能手动触发,或者如果某个 git 标签被推送,例如 release/v* ( https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified )。在这项工作中,您通过 ssh 连接到产品服务器并再次执行 docker-compose downdocker-compose pulldocker-compose up 假设发布 docker 图像已经建成。也就是说,您不在部署机器上构建和标记您的 docker 镜像 - 只在那里运行容器。

要在您的构建服务器上构建 docker 镜像,您可以使用 shell 执行器、docker-in-docker 或 docker 套接字绑定(bind):https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

shell 方法是最简单的。

关于docker - Gitlab CI - 在开发服务器上部署 docker-compose.yml,测试并部署到 PD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517051/

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