使用docker compose在Gitlab CI中保留docker构建

使用docker compose在Gitlab CI中保留docker构建,docker,docker-compose,gitlab,Docker,Docker Compose,Gitlab,我有一个包含三个部分的存储库:前端、管理和服务器。每个都包含自己的Dockerfile 在构建映像之后,我想添加一个管理员测试。我的测试通过了,但需要很多时间,因为它会在每个阶段从零开始构建基础图像(比如每个阶段8分钟)。这是我的.gitlab ci.yml image: tmaier/docker-compose services: - docker:dind stages: - build - test build: stage: build script:

我有一个包含三个部分的存储库:前端、管理和服务器。每个都包含自己的Dockerfile

在构建映像之后,我想添加一个管理员测试。我的测试通过了,但需要很多时间,因为它会在每个阶段从零开始构建基础图像(比如每个阶段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


有什么想法吗?:)

标记您能显示文件docker-compose.yml docker-compose.test.yml吗?
可能你尝试推拉不同的图像。顺便说一句,请尝试将docker登录置于脚本之前,使其在所有作业中都有效。

Gitlab目前无法在阶段之间作为工件共享docker图像。他们有一个突出的功能要求这三年

您需要将docker映像推送到docker注册表,并在需要它的后期阶段将其拉入。(或在一个阶段内完成与图像相关的所有工作)