Docker 如何在gitlab ci中缓存部署映像?
我正在创建一个Docker 如何在gitlab ci中缓存部署映像?,docker,continuous-integration,gitlab,gitlab-ci,Docker,Continuous Integration,Gitlab,Gitlab Ci,我正在创建一个gitlab ci部署阶段,它需要比映像中现有库更多的库。在本例中,我添加了ssh(在现实世界中,我想添加更多的lib): 问题:我如何告诉gitlab runner缓存我在部署阶段构建的映像,并在将来的所有部署运行中重用它?因为如前所述,每次部署都会进行库安装,即使在运行之间没有任何更改。GitLab只能缓存文件/目录,但由于apt的工作方式,没有简单的方法告诉它缓存您这样做的安装。您也不能“缓存”图像 我看到了两种选择: 创建或使用已包含依赖项的docker映像 然后构建/推送
gitlab ci
部署阶段,它需要比映像中现有库更多的库。在本例中,我添加了ssh
(在现实世界中,我想添加更多的lib):
问题:我如何告诉gitlab runner缓存我在部署阶段构建的映像,并在将来的所有部署运行中重用它?因为如前所述,每次部署都会进行库安装,即使在运行之间没有任何更改。GitLab只能缓存文件/目录,但由于apt的工作方式,没有简单的方法告诉它缓存您这样做的安装。您也不能“缓存”图像 我看到了两种选择:
图像:
:
image:membersound/maven-openjdk11-with-deps:latest
或者简单地选择一个已经具有您想要的所有依赖项的图像!有许多有用的docker图像,并安装了有用的工具。例如,安装了许多运行时和工具(java、python、AWS CLI、kubectl等)
install deps.sh
#/usr/bin/env bash
PACKAGES=“wget jq foo bar baz”
如果[!-d./.deb_包];然后
apt更新&&apt--仅下载安装-y${PACKAGES}
cp/var/cache/apt/archives/*.deb./.deb_包
fi
apt安装-y./.deb_软件包/*.deb
这将导致debian文件缓存在目录/.deb\u packages
中。然后,您可以将gitlab配置为缓存它们,以便以后可以使用它们
我的工作:
在脚本之前:
-安装-deps.sh
脚本:
- ...
隐藏物:
路径:
-./.deb_包
image: adoptopenjdk/maven-openjdk11
...
deploy:
stage: deploy
script:
- which ssh || (apt-get update -y && apt-get install -y ssh)
- chmod 600 ${SSH_PRIVATE_KEY}
...
FROM adoptopenjdk/maven-openjdk11
RUN apt update && apt install -y foo bar baz