我有一个问题问你 .
我最近进入了CI / CD,对我来说一个很好的起点是Gitlab,因为它们提供了一个简单的界面,我开始讲述管道和阶段是什么,但我遇到了一些关于Gitlab CI的矛盾思想在Docker上运行 .
我的应用程序在Docker Compose上运行 . 它包含(等等),可以轻松构建和运行容器 . Docker Compose中的每个服务都创建了一个Docker容器,除了php-fpm之外,它可以做一个名为“水平扩展”的东西,所以我可以稍后扩展它 .
我将使用Docker Compose进行 生产环境 ,我目前正在开发中使用它,我也希望在CI / CD管道中使用它 .
However the .gitlab-ci.yml provides support for only one image, so I have to build it and push it to either their Gitlab Registry or Docker Hub in order to pull it later in the CI/CD process.
How can I build my Docker Compose's service as a single image in order to push it to the Registry/Docker so I can pull it in the CI/CD?
我的项目包含一个docker文件夹和一个docker-compose.yml . 在docker文件夹中,每个服务都有自己独立的目录(php-fpm,nginx,mysql等),每一个(自己准备)包含一个带有构建细节的Dockerfile,特别是php-fpm(deps和libs很强)用这一个)
docker-compose.yml中的每个服务都在其自己的每个文件夹中都有一个构建上下文 .
如果我不清楚,我可以提供额外的信息(免费)
2 回答
您不需要
dind
来运行docker-compose堆栈 . 您可以运行多个docker-compose up
命令 .我想你会搜索这样的东西
也很好知道:
In Docker, what's the difference between a container and an image?
Building Docker images with GitLab CI/CD