如何解决在 GitLab 管道中运行 `docker compose`
我需要将应用程序堆栈部署到 ECS。为此,我使用了新的 Docker Compose ECS 集成(参见例如 here)。
简而言之,一切都归结为使用正确的 docker context
并启动命令 docker compose up
。这很有帮助,而且速度非常快。
我想在 GitLab 管道中自动化部署过程。
我应该在我的管道中使用什么 (Docker) 映像才能运行新的 docker compose
命令?
提前致谢。
解决方法
所以从评论中详细说明这个想法:
docker compose
二进制文件与 docker
命令本身直接交织在一起,本质上是它的扩展。
据我所知,现在有两个主要选项:
-
您设置了一个专用的 gitlab 运行器,它与普通的 shell 执行器一起工作。然后,您在该机器上安装 docker 并根据 this 手册设置 compose-cli。然后就可以使用 compose 命令开始部署了。
-
您创建了一个为您提供
docker compose
命令的 docker 镜像。一个示例 dockerfile 可能如下所示:
FROM docker
RUN apk add curl
RUN apk add tar
RUN curl -L https://github.com/docker/compose-cli/releases/download/v1.0.6/docker-linux-amd64.tar.gz -O
RUN tar xzf docker-linux-amd64.tar.gz
RUN chmod +x docker/docker
RUN ln -s /usr/local/bin/docker /usr/bin/com.docker.cli
现在,很难使 docker 守护进程可用。但是,使用 gitlabs dind 工作流程应该是可能的。
使用 docker run --rm --privileged -it <containername> sh
启动容器后
我的示例中的 docker compose
命令将作为 ./docker compose
使用,因为我没有将新的 docker 二进制文件添加到任何路径。但是 docker 守护进程没有启动。
注意:从这个 Dockerfile 生成的镜像本质上只是一个经过修改的 Docker-in-Docker 镜像。所以它应该工作,但我无法测试它。
Docker 本身在他们的 docker hub 上提供了一个镜像,它提供了 docker-compose 功能。 Gitlab CI 图像标签将是“docker/compose”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。