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

时间:2019-02-04 09:34:21

标签: docker docker-compose gitlab

我有一个包含三个部分的存储库:前端,管理和服务器。每个都包含自己的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。

有什么想法吗? :)

2 个答案:

答案 0 :(得分:0)

标记,您可以显示docker-compose.yml文件docker-compose.test.yml吗? 可能是您尝试推拉不同的图像。顺便说一句,尝试将 docker登录放在 before_script 部分,以使其适用于所有作业。

答案 1 :(得分:0)

Gitlab当前无法将阶段之间的Docker映像作为工件共享。对于此功能,他们已经有3年了。

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