在 Azure Pipelines 中创建(并使用)本地 Docker 映像

问题描述 投票:0回答:1

我目前正在尝试将 Jenkins 管道脚本迁移到 Azure Pipelines。在 Jenkins 构建中,本地 Dockerfile 用于设置代理并运行多个 Maven 命令。 Dockerfile 如下所示:

FROM maven:3.9.0-eclipse-temurin-17

RUN apt-get update && apt-get install -y openjdk-17-jdk xvfb

我正在尝试将此设置转换为

azure-pipelines.yml
文件,在其中我在一个作业中构建 Docker 映像,以便在后续作业中使用:

jobs:
  - job: buildImage
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: Docker@2
      inputs:
        command: 'build'
        Dockerfile: 'Dockerfile'
        tags: 'buildimage:latest'
        
  - job: buildJar
    displayName: Build jar
    dependsOn:
    - buildImage
    timeoutInMinutes: 10
    container:
      image: buildimage:latest
    steps:
    - script: 'mvn clean install'

问题是buildJar作业无法找到buildImage作业中构建的本地图像

buildimage:latest
。是否可以按照我设想的方式进行设置?或者我应该首先将图像推送到私人注册表,使用私人代理,还是考虑其他方法?任何建议将不胜感激。

docker azure-pipelines azure-pipelines-yaml
1个回答
0
投票

当您使用 Microsoft 提供的云托管代理时,它们会在每次作业后回收,因此您无法对作业之间的本地环境做出假设。

要复用容器,容器注册表是最常见的方法。

如果您的 docker 容器只是一组特定的 JDK 工具并且不经常更改,我会使用单独的管道来创建和推送容器映像。

要使用容器注册表,您需要将 service-connection 指定为端点

- job: buildJar
  container:
    image: buildimage:latest
    endpoint: mycontainer_registry_service_connection
  steps:
  - script: 'mvn clean install'
© www.soinside.com 2019 - 2024. All rights reserved.