Docker Gitlab CI-构建映像并传递到下一阶段?

Docker Gitlab CI-构建映像并传递到下一阶段?,docker,gitlab,gitlab-ci,Docker,Gitlab,Gitlab Ci,我正在尝试使用Gitlab CI和PHP/Symfony项目设置管道。我的.gitlab ci.yml文件应包含3个阶段: 构建-构建映像、设置数据库、安装composer等 测验 单元测试 其他测试(代码质量、安全检查) 我让它按目前应该的方式工作,但只是通过在每次测试的同时运行构建步骤——这意味着我将重复相同的构建步骤两次,并且花费的时间比它应该做的要长 我注意到Gitlab允许您构建Docker映像并将其存储在项目中,但目前是否有一种机制来构建Docker映像并将其存储(作为工件)

我正在尝试使用Gitlab CI和PHP/Symfony项目设置管道。我的
.gitlab ci.yml
文件应包含3个阶段:

  • 构建-构建映像、设置数据库、安装composer等
  • 测验
    • 单元测试
    • 其他测试(代码质量、安全检查)
我让它按目前应该的方式工作,但只是通过在每次测试的同时运行构建步骤——这意味着我将重复相同的构建步骤两次,并且花费的时间比它应该做的要长


我注意到Gitlab允许您构建Docker映像并将其存储在项目中,但目前是否有一种机制来构建Docker映像并将其存储(作为工件)并将其传递到测试阶段,这样他们就不需要重复构建?

尽管使用注册表存储图像确实是推荐的方法,但您的问题有一个答案:

build
阶段,将图像另存为文件:

docker save-o myimage.tar myimage:build123

myimage.tar
定义为工件,在后续阶段作业中使用
dependens\u
并将图像加载到其中:


docker load-i myimage.tar

谢谢-我遇到了一个障碍,因为我的图像基于php7.3-fpm,它不包含
docker
二进制文件,所以
docker save
命令似乎不会运行。我注意到,您可以使用
docker:dind
作为一项服务,但我正在努力将所有内容粘在一起。你知道我还能看到什么更完整的例子吗?@fistameeny有一个完整的编码例子。结合上面Stefan的答案和答案,你应该完成。