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.

Docker Swarm pasa la variable de entorno al contenedor.

Tengo un archivo yml de Docker Cloud para implementar en diferentes entornos como pruebas, producción, QA.
Quiero pasar variables de entorno al contenedor. Estas variables están disponibles en mi terminal. ¿Cómo puedo agregar una propiedad de entorno a mi yml para pasarlo al contenedor para que pueda usarlo en la aplicación React? Puedo configurar los valores de healthcheck e imagen desde la terminal. Por ejemplo, “MAXLOGSIZE” se toma automáticamente de la terminal, al igual que “SERVICENAME” y así sucesivamente (todas las cadenas en mayúsculas en este archivo). Pero no puedo pasar las variables de entorno a los contenedores. Como por ejemplo “deploystage = MYENVVARIABLE”. Por cierto, todas las variables de terminal se completan a través de la biblioteca de canalizaciones de Azure DevOps.

version: "3.9"

servicios:
  NOMBRESERVICIO:
    deploy:
      modo: replicado
      ubicación:
        restricciones: [ node.role == worker ]
        máximoReplicasPorNodo: 1
      replicas: CANTIDADREPLICAS
      actualizarConfiguración:
        demora: 15s
        acciónFallida: rollback
        monitor: 60s
        orden: detener-primero
        paralelismo: 1
    healthcheck:
      prueba: [ "CMD", "wget", "--spider", "URLVERIFICACIÓNDEESTADO" ]
      intervalo: 60s
      tiempoDeEspera: 10s
      reintentos: 3
      periodoDeInicio: 15s
    imagen: "REGISTROCONTENEDOR/IMAGENDOCKER"
    registro:
      conductor: "json-file"
      opciones:
        tamañoMáximo: "TAMAÑOMAXIMOLOG"
        archivosMáximos: "TAMAÑOMAXIMOARCHIVOS"
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para pasar variables de entorno al contenedor en el archivo yml de Docker Cloud, puedes utilizar la propiedad environment debajo de la definición de SERVICE_NAME. Puedes asignar valores a las variables utilizando la sintaxis NOMBRE_VARIABLE: VALOR_VARIABLE y hacer referencia a los valores desde la terminal usando ${NOMBRE_VARIABLE}.

    Aquí te mostramos un ejemplo de cómo puedes añadir variables de entorno al archivo yml de Docker Cloud:

    version: "3.9"
    
    services:
      NOMBRE_SERVICIO:
        deploy:
          mode: replicated
          placement:
            constraints: [ node.role == worker ]
            max_replicas_per_node: 1
          replicas: CANTIDAD_REPLICAS
          update_config:
            delay: 15s
            failure_action: rollback
            monitor: 60s
            order: stop-first
            parallelism: 1
        healthcheck:
          test: [ "CMD", "wget", "--spider", "URL_VERIFICACION_SALUD" ]
          interval: 60s
          timeout: 10s
          retries: 3
          start_period: 15s
        image: "REGISTRO_CONTENEDOR/IMAGEN_DOCKER" 
        environment: 
          - VAR1: ${MI_VARIABLE_ENTORNO}
          - VAR2: ${OTRA_VARIABLE_ENTORNO}
        logging:
          driver: "json-file"
          options:
            max-size: "TAMAÑO_MAXIMO_LOG"
            max-file: "MAX_ARCHIVOS_LOG"
    
    

    En el ejemplo anterior, puedes ver que declaramos dos variables de entorno: VAR1 y VAR2, y sus valores están asignados a las variables correspondientes de la terminal.

    Asegúrate de que las variables MI_VARIABLE_ENTORNO y OTRA_VARIABLE_ENTORNO estén definidas en la biblioteca de Azure DevOps Pipeline para que puedan ser accedidas en el archivo yml.

Comments are closed.