我在Gitlab存储库中有一个docker-compose文件和几个Dockerfiles。docker-compose文件由许多相互依赖的镜像组成。我们有两个docker服务器,一个生产服务器和一个开发服务器。我们想要实现以下目标:
1.通过触发器(手动或提交),我们希望关闭dev server上的容器(通过
docker-compose down
)。
2.检出存储库的最新/当前版本(包含docker-compose.yml和Dockerfiles)。
3.在dev server上启动所有容器(通过docker-compose up -d
)。
4.[稍后需要定义]开始测试。
5.如果测试成功或通过手动交互(单击按钮),则应将环境部署到prod server上(即在prod server上执行步骤1、2和3)。这种方法有什么问题吗?我目前遇到的主要问题是,我不知道如何“使用”/“引用”我的现有服务器。因此,我不想采用通常的方法(创建一个新的隔离的docker容器,测试软件并丢弃),而是想按照上述描述进行操作。
感谢您的帮助!
编辑
经过一些额外的研究,我觉得有必要添加一些内容:从我的理解来看,通常在CI/CD流水线中会启动一个Docker容器来测试您的应用程序。由于我实际上正在测试整个容器堆栈/ docker-compose文件,这需要对docker主机系统进行某些要求,因此我需要使用类似于docker in docker的东西并在那里部署我的堆栈。但是,在第一阶段中,我想使用现有的docker服务器,因为我的“堆栈”需要进行调整,以便从头开始动态创建。
容器对主机系统有要求的原因是我们在这种情况下将Docker用作基础设施工具。因此,我们使用Docker容器而不是VM。结果是企业应用程序的完整环境,其中不同的服务(管理界面、存储库等)是单独的容器。
希望这可以帮助您。如果有不清楚的地方,请随时问我。
.gitlab-ci.yml
文件中将dev server
部署和prod server
部署定义为单独的环境:https://docs.gitlab.com/ee/ci/yaml/README.html#environment如果你为上述第 3 和第 5 个部署到 dev 和 prod 的作业定义了environment
,那么你将在 gitlab 中获得良好的 UI 支持。 - Rumen Kyusakov