首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Jenkins管道从docker-compose创建docker镜像?

问如何使用Jenkins管道从docker-compose创建docker镜像?
EN

Stack Overflow用户
提问于 2021-04-14 21:51:31
回答 1查看 89关注 0票数 0

我正在尝试为elasticsearch构建一个docker镜像并部署该镜像(到Azure注册表,并让它作为Azure Web应用程序运行)。

我用Dockerfile做得很好,但是我不知道如何用docker-compose.yml文件做这件事。

这是我的docker-compose:

代码语言:javascript
复制
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

代码语言:javascript
复制
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的理解。

EN

回答 1

Stack Overflow用户

发布于 2021-04-14 23:10:44

Docker Compose使用Dockerfiles构建镜像。在上面的docker-compose.yml中,您不是在构建镜像,而是使用已经从注册表构建的镜像(正如@David Maze已经指出的)。

大多数人在生产环境中不使用compose文件,除非他们使用Swarm模式。虽然Docker Compose可以在生产环境中使用,但人们倾向于仅在开发环境中使用Docker Compose。

您有两个选择: a)将Docker镜像的构建与您的应用程序项目绑定;b)使用单独的管道仅用于Docker镜像的构建,如果您有大量镜像,这是首选;

在A的情况下,只需在项目存储库中的某个位置创建Dockerfile,并在管道中创建阶段,以构建、上传映像,然后将其部署到容器编排基础设施中。它可以是Docker主机、Kubernetes集群、Swarm、Fargate、ECS等。在B示例中,您已经有了一个基础镜像,您将通过另一个Dockerfile将其导入到您的项目中。在这个辅助Dockerfile中,最有可能的是复制源代码。然后,只需将其上传到您的注册表,并最终将其部署到您的基础设施。

诚挚的问候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67093124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档