我有一个包含三个部分的存储库:前端,管理和服务器。每个都包含自己的Dockerfile。
构建图像后,我想为 admin 添加一个测试。我的测试通过了,但是要花很多时间,因为它拉动了基础图像并在每个阶段从头开始构建了所有内容(例如每个阶段8分钟)。这是我的.gitlab-ci.yml
image: tmaier/docker-compose
services:
- docker:dind
stages:
- build
- test
build:
stage: build
script:
- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
- docker-compose build
- docker-compose push
test:admin:
stage: test
script:
- docker-compose -f docker-compose.yml -f docker-compose.test.yml up admin
我不确定是否需要在各阶段之间推送/拉动图像,或者是否应该使用工件/缓存/任何东西来做到这一点。据我了解,仅当我要将映像部署到另一台服务器时,才需要推/拉。但是我还添加了一个docker-compose push
,它可以运行,但是Gitlab在注册表中没有显示任何图像。
我已经对此进行了很多研究,但是我发现的大多数示例代码仅是关于一个docker容器的,他们没有利用docker-compose。
有什么想法吗? :)
答案 0 :(得分:0)
标记,您可以显示docker-compose.yml文件docker-compose.test.yml吗? 可能是您尝试推拉不同的图像。顺便说一句,尝试将 docker登录放在 before_script 部分,以使其适用于所有作业。
答案 1 :(得分:0)
Gitlab当前无法将阶段之间的Docker映像作为工件共享。对于此功能,他们已经有3年了。
您需要将docker映像推送到docker注册表,并在以后需要它的阶段将其拉出。 (或者在一个阶段中完成与图像相关的所有操作)