有可能在Gitlab CI / CD上缓存docker-compose吗?

时间:2020-06-07 19:28:20

标签: docker docker-compose gitlab

每次应用更新时,都会再次创建docker-compose。有没有机会将此构建版本缓存在Gitlab CI / CD上?

gitlab-ci.yml:

image: docker

services:
  - docker:dind    

stages:
  - build
  - deploy

Build staging:
  stage: build

  before_script:
    - apk update
    - apk upgrade
    - apk add python3 python3-dev py3-pip build-base libffi-dev openssl-dev
    - pip install docker-compose

  script:
    - docker-compose up -d
    - docker exec -i app_php composer install

Deploy staging:
  stage: deploy
...

1 个答案:

答案 0 :(得分:1)

您需要为此创建一个自定义Docker映像。首先,创建具有以下内容的/teams

Dockerfile

接下来,您有三个选择:

#1在跑步机上构建图像

如果您可以访问运行器计算机,最简单的方法是使用以下命令在该计算机上使用Dockerfile构建映像:

FROM docker
RUN apk update && apk upgrade && apk add python3 python3-dev py3-pip build-base libffi-dev openssl-dev
RUN pip install docker-compose

然后,将docker build -f /path/to/Dockerfile -t your_org/image_name:version 中的图像名称替换为您在.gitlab-ci.yml期间指定的图像标签your_org/image_name:version

#2在开发计算机上构建映像并推送到DockerHub

如果您无权访问运行器计算机,或者运行器计算机可能具有清除未使用的Docker映像的清除例程,那么您的下一个选择就是利用DockerHub。

首先,注册一个尚未注册的DockerHub帐户。还要在您的帐户下创建一个公共存储库。接下来,在开发机器上使用与上面的选项#1相同的docker build命令。但是,请确保image标签的docker build部分与您的DockerHub帐户名相同,而your_org部分与新的存储库名称匹配。

然后,使用以下命令登录并推送Docker映像:

image_name

然后,将docker login docker push your_org/image_name:version 中的图像名称替换为您在.gitlab-ci.yml期间指定的图像标签your_org/image_name:version

#3 GitHub-DockerHub自动构建设置

此选项用于更高级的用法,例如,如果您的自定义Docker映像要求映像中包含其他文件。首先,如果您还没有一个GitHub帐户,则需要创建一个GitHub帐户(!)。然后,创建一个公共存储库,并docker build git push和任何其他文件。接下来,创建一个DockerHub存储库并将其与该GitHub存储库链接。配置DockerHub存储库以在GutHub存储库的Dockerfile上自动构建。最后,从您的DockerHub存储库git push屏幕触发构建。