簡體   English   中英

使用 gitlab-ci 構建多個 Docker 鏡像

[英]Build multiple Docker images with gitlab-ci

我正在嘗試配置一個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 用作 docker 構建工具和稱為矩陣構建的 GitLabs 功能。

如何使用 kaniko 構建 docker 圖像

下面的片段取自官方 GitLab 文檔

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 '\n')\"}}}" > /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 '\n')\"}}}" > /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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM