es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Azure Pipeline para construir y empujar imágenes de Docker en lote?

Tengo que descargar un montón de imágenes de Docker, instalar algunos certificados de CA raíz en ellas y subirlas a un repositorio privado.

La lógica que se me ocurrió es:

  1. Crear un archivo de docker plantilla (Dockerfile.Template)
  2. En un pipeline, declarar todas las imágenes base que se van a descargar
  3. Ejecutar una por una en el archivo docker reemplazando el nombre de la imagen
  4. Subir una por una

La plantilla de Dockerfile que creé es:

FROM mcr.microsoft.com/dotnet/#{baseImage}# AS base

COPY RootCA-1.crt /usr/local/share/ca-certificates/
COPY RootCA-SubCA-1.crt /usr/local/share/ca-certificates/

RUN update-ca-certificates

El pipeline de Azure es:

trigger:
- master

parameters:
- name: 'images'
  type: object
  default: 
  - sdk:6.0
  - sdk:5.0
  - sdk:3.1
  - sdk:2.1

pool:
  vmImage: ubuntu-latest

steps:
- ${{ each baseImage in parameters.images }}:
  - bash: |
      echo "current image is $(BASEIMAGE)"
    displayName: 'Print Current Image'
  - task: CopyFiles@2
    inputs:
      Contents: 'Dockerfile.Template'
      TargetFolder: 'Dockerfile'
    displayName: 'Copy Dockerfile Template'
  - task: replacetokens@4
    inputs:
      targetFiles: 'Dockerfile'
      encoding: 'auto'
      tokenPattern: 'default'
      writeBOM: true
      actionOnMissing: 'warn'
      keepToken: false
      actionOnNoFiles: 'continue'
      enableTransforms: false
      useLegacyPattern: false
      enableTelemetry: true
    displayName: 'Replace Tokens'
  - task: Docker@2
    inputs:
      containerRegistry: 'MyPrivateRegistry'
      repository: 'dotnet/$(baseImage)'
      command: 'buildAndPush'
      Dockerfile: '**/Dockerfile'
    displayName: 'Build and Push Docker Image'

Mi problema actual es que la actividad de replace token no reemplaza #{baseImage}# para la actividad de Docker.

¿Puede alguien ayudar?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo ayudar directamente con la depuración de código. Sin embargo, a partir de la lógica y el pipeline proporcionados, parece que el problema puede estar en el parámetro tokenPattern en la tarea replacetokens. Este parámetro debe coincidir con la sintaxis utilizada en la plantilla de Dockerfile, que es #{baseImage}#. Por lo tanto, el parámetro tokenPattern debe establecerse en #{*}# para que coincida con cualquier cadena entre #{ y }#. Además, asegúrese de que el parámetro BASEIMAGE se cambie a baseImage en el script de bash para que coincida con el nombre del parámetro en el pipeline.

Comments are closed.