簡體   English   中英

如何使用 Jenkins 管道從 docker-compose 創建 docker 映像?

[英]How can I use a Jenkins pipeline to create a docker image from docker-compose?

I'm trying to build a docker image for elasticsearch and deploy the image (to an Azure registry and have it run as an Azure Web App).

我用Dockerfile做得很好,但不知道如何用docker-compose.yml文件做到這一點。

這是我的 docker-compose:

version: '3.8'

services:
  elasticsearch:
    container_name: elasticsearch
    image: library/elasticsearch:6.8.15
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - backend


networks:
  backend:
    name: backend-network-elasticsearch

和我的 Jenkinsfile

pipeline {
  environment {
    APP = 'elasticsearch01'
    registry = "utilitaweb.azurecr.io/${APP}"
    registryUrl = "https://___.azurecr.io"
    registryCredential = 'azureregistry'
    dockerImage = ''
    buildNumber = "build_$BUILD_NUMBER"
  }
  agent any
  stages {
    stage('Building image') {
      steps{
        ???
      }
    }
    stage('Deploy Image') {
      steps{
        script {
            docker.withRegistry(registryUrl, registryCredential) {
                dockerImage.push()
                dockerImage.push(buildNumber)
            }
        }
      }
    }
  }
}

在構建步驟中我應該有什么?

以前我有dockerImage = docker.build("${registry}:latest", "--build-arg APP=${APP} --build-arg -f Dockerfile.")或類似的,但顯然這贏了不行。

我認為這是由於我對 Docker 而不是 Jenkins 缺乏了解。

Docker Compose 使用 Dockerfiles 構建鏡像。 在上面的docker-compose.yml中,您不是在構建映像,而只是使用從注冊表中構建的映像(正如 @David Maze 已經指出的那樣)。

大多數人不會在生產中使用 compose 文件,除非他們使用 Swarm 模式。 雖然它可以用於生產,但人們傾向於僅在開發環境中使用 Docker Compose。

您有兩個選擇: a) 將 Docker 映像的構建與您的應用程序項目綁定,或者; b) 有一個單獨的管道來構建你的 Docker 圖像,如果你有很多圖像,這是首選;

在 A 的情況下,只需在項目存儲庫中的某處有一個 Dockerfile 並在管道中創建階段以構建、上傳然后將該映像部署到容器協調器基礎架構。 它可能是一個 Docker 主機、一個 Kubernetes 集群、一個 Swarm、Fargate、ECS 等。在 B 的情況下,你已經有了一個基礎鏡像,你將通過另一個 Z3254677A7918FZFZFZFZC27C76C 導入到你的項目中在這個二級 Dockerfile 中,很可能您只需復制您的源代碼。 然后,只需將其上傳到您的注冊表,最后將其部署到您的基礎架構。

此致。

暫無
暫無

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

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