使用GitLab-ci构建多个Docker映像 [英] Build multiple Docker images with gitlab-ci

查看:34
本文介绍了使用GitLab-ci构建多个Docker映像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试配置gitlab-ci.yml文件以自动构建两个Docker映像。我见过使用docker-compose完成此操作,但在我的示例中,我不想使用docker-compose。

我看到的docker-compose.yml配置如下所示:

version: '3'

services:
  vcxagency-base:
    build:
      context: https://github.com/AbsaOSS/vcxagencynode.git#master
      dockerfile: ./vcxagency-base/vcxagency-base.Dockerfile
    image: vcxagency-base:1.15.0
  
  vcxagency-node:
    build:
      context: https://github.com/AbsaOSS/vcxagencynode.git#master
      dockerfile: ./vcxagency-node/Dockerfile
    image: vcxagency-node:0.3.1
    ports:
      - 8080:8080
    depends_on:
      - postgres
    environment:
      - LOG_LEVEL=debug
      - LOG_ENABLE_INDYSDK=false
      - LOG_JSON_TO_CONSOLE=false
      - SERVER_PORT=8080
      - SERVER_MAX_REQUEST_SIZE_KB=300
      - SERVER_ENABLE_TLS=false

我根本没有和Docker合作过。我尝试浏览文档,但找不到具体内容。

我们的目标是让它们在Kubernetes集群上运行,但现在我只想在GitLab中构建映像。

推荐答案

您可以将Kaniko用作驳接生成工具和Gitlab称为矩阵生成的功能。

如何使用kaniko构建坞站映像

以下片段摘自官方GitLabdocs

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - mkdir -p /kaniko/.docker
    - echo "{"auths":{"${CI_REGISTRY}":{"auth":"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '
')"}}}" > /kaniko/.docker/config.json
    - >-
      /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}"
  rules:
    - if: $CI_COMMIT_TAG

什么是矩阵构建?

GitLab引入了并行作业执行的一项功能,称为矩阵作业,基本上是使用不同的变量集(变量矩阵)多次执行作业。

以上述代码片段为基础,您将得到如下所示的结果(假设您的dockerfile存储在<PROJECT_DIR>/dockerfiles/下,分别命名为A.dockerfileB.dockerfile):

.kaniko-build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - mkdir -p /kaniko/.docker
    - echo "{"auths":{"${CI_REGISTRY}":{"auth":"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '
')"}}}" > /kaniko/.docker/config.json
    - >-
      /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/${DOCKERFILE}"
      --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}"
  rules:
    - if: $CI_COMMIT_TAG

docker-build:
  extends: .build
  parallel:
    matrix:
      - DOCKERFILE: ${CI_PROJECT_DIR}/dockerfiles/A.dockerfile
      - DOCKERFILE: ${CI_PROJECT_DIR}/dockerfiles/B.dockerfile

这篇关于使用GitLab-ci构建多个Docker映像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆