Gitlab CI/CD, Docker Compose and the app
我有个问题要问你。
我最近进入了CI/CD,对我来说一个好的起点是Gitlab,因为它们提供了一个简单的接口,我开始了解什么是管道和阶段,但是我遇到了一些关于在Docker上运行Gitlab CI的矛盾想法。
我的应用程序在Docker Compose上运行。它包含(blah blah),使构建和运行容器变得容易。docker compose中的每一个服务都创建一个docker容器,除了php fpm容器,它可以做一个叫做"水平比例"的事情,所以我可以稍后对其进行缩放。
我将使用docker compose进行生产,我目前正在开发中使用它,我也希望在CI/CD管道中使用它。
但是.gitlab-ci.yml只支持一个映像,因此我必须构建它并将其推送到其Gitlab注册表或Docker集线器,以便在稍后的CI/CD过程中提取它。
如何将Docker Compose的服务构建为单个映像,以便将其推送到注册表/Docker,以便将其拉入CI/CD?
我的项目包含docker文件夹和docker-compose.yml。在docker文件夹中,每个服务都有自己的独立目录(php fpm、nginx、mysql等),每个目录(自己准备)都包含一个包含构建细节的dockerfile,特别是php fpm文件(deps和libs与此文件很强)。
docker-compose.yml中的每个服务在各自的文件夹中都有一个构建上下文。
如果我不清楚,我可以提供额外的信息(免费)
您不需要
1 2 3 4 5 6 7 8 | acceptance_testing: stage: test before_script: - docker-compose -p $CI_JOB_ID up -d script: - docker-compose -p $CI_JOB_ID exec -T /run/your/test/suite.sh after_script: - docker-compose -p $CI_JOB_ID down -v --remove-orphans || true |
我想你在找类似的东西
1 2 3 4 5 6 7 8 9 10 11 12 | # .gitlab-ci.yml image: docker services: - docker:dind build: script: - apk add --no-cache py-pip - pip install docker-compose - docker-compose up -d |
也很高兴知道:
- 在Docker中,容器和图像有什么区别?
- 用Gitlab CI/CD构建Docker图像