Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

146
Visualizações
¿Docker-compose admite la combinación de variables de entorno de campo de extensión con declaraciones de servicio?

Usando la función de campos de extensión de Docker Compose 3.4, ¿es posible combinar un conjunto común de variables de entorno en forma de matriz (o cualquier matriz) con declaraciones específicas del servicio? La documentación no está clara en cuanto a si esto es compatible.

Llamar docker-compose up en el siguiente YAML da como resultado el restart , el punto de entrypoint y los volumes que se configuran en my-service , pero parece reemplazar la declaración de environment que proviene del campo de extensión con la declaración que existe en my-service . Me gustaría que se fusionaran.

 version: '3.4' x-service-config: &service-config restart: "on-failure" entrypoint: "" volumes: - "~/.aws:/home/serviceuser/.aws" environment: - "CommonVar1=foo" - "CommonVar2=bar" services: my-service: <<: *service-config image: my-service:latest environment: - "ServiceVar1=baz"
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La fusión solo ocurre en el nivel superior. Si desea fusionar una clave en un nivel inferior, use una plantilla separada.


Recreé el problema usando el siguiente archivo de redacción. Utiliza una imagen pública y ejecuta el comando env para que uno pueda seguirlo fácilmente sin dependencias externas.

Aquí hay un docker-compose.yml que funciona de forma independiente, que muestra cómo se fusiona el 'entorno':

 version: '3.4' x-service-config: &ref restart: 'on-failure' environment: &env 'foo': 'bar' 'bing': 'baz' services: bop: image: 'alpine' command: 'env' <<: *ref

Aquí está el resultado, que muestra que la clave de 'entorno' del ancla se está copiando:

 $ docker-compose up Creating network "merge_default" with the default driver Creating merge_bop_1 ... done Attaching to merge_bop_1 bop_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bop_1 | HOSTNAME=d4122a655e1d bop_1 | foo=bar bop_1 | bing=baz bop_1 | HOME=/root merge_bop_1 exited with code 0

Aquí está el mismo archivo de redacción, pero con 'entorno' anulado en la definición de servicio 'bop':

 version: '3.4' x-service-config: &ref restart: 'on-failure' environment: &env 'foo': 'bar' 'bing': 'baz' services: bop: image: 'alpine' command: 'env' environment: 'bat': 'far' <<: *ref

y la salida correspondiente, mostrando solo bat=far y no las otras variables:

 $ docker-compose up Creating network "merge_default" with the default driver Creating merge_bop_1 ... done Attaching to merge_bop_1 bop_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bop_1 | HOSTNAME=efe76cb7e09d bop_1 | bat=far bop_1 | HOME=/root merge_bop_1 exited with code 0

La solución es dividir esto en dos plantillas/anclajes de la siguiente manera:

 version: '3.4' x-service-config: &ref restart: 'on-failure' x-environment-config: &env 'foo': 'bar' 'bing': 'baz' services: bop: image: 'alpine' command: 'env' environment: <<: *env 'true': 'false' <<: *ref

y aquí está el resultado que muestra los valores combinados:

 $ docker-compose up Creating network "merge_default" with the default driver Creating merge_bop_1 ... done Attaching to merge_bop_1 bop_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bop_1 | HOSTNAME=617f90a94a7d bop_1 | foo=bar bop_1 | bing=baz bop_1 | true=false bop_1 | HOME=/root merge_bop_1 exited with code 0

Esto funciona porque está fusionando las dos claves que desea fusionar.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda