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

614
Visualizações
La variable de entorno no va al contenedor desde docker-compose

Intentaba pasar ENV_VAR a un contenedor, pero no funcionaba.

 version: '3.7' services: ubuntu: image: ubuntu:latest environment: - ENV_VAR=teste command: "echo ${ENV_VAR}"

El problema se resolvió usando $$ en lugar de $ :

 version: '3.7' services: ubuntu: image: ubuntu:latest environment: - ENV_VAR=teste command: '/bin/sh -c "echo $$ENV_VAR"'

Pero no entiendo por qué tuve que llamar a sh y no creo que una aplicación en ejecución dentro de mi imagen pueda leer este valor.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Tener una variable en su contenedor en tiempo de ejecución y tener esta variable disponible en el tiempo de inicio en su docker-compose.yml son cosas diferentes. Compose no puede sustituir variables en algún lugar del archivo de configuración con variables de la sección de environment del archivo, lo que está intentando hacer en la parte del command , pero tendría que usar un archivo .env para que esto funcione.

O, como lo hizo, use la sintaxis $$ para evitar que Compose evalúe una variable , pero deje que haga el Shell invocado en el contenedor.

Sin embargo, las variables en la parte del environment están disponibles para el contenedor. Puedes comprobarlo con este ejemplo mínimo:

  • docker-compose.yml
 version: "3.7" services: foo: image: ubuntu container_name: ubuntu environment: - foo=bar command: sleep 3
 nico@tuxedo:~/StackOverflow$ docker-compose up -d && docker exec ubuntu /bin/sh -c "env | grep foo" Starting ubuntu ... done foo=bar

Entonces, su aplicación dentro del contenedor no debería tener problemas para obtener esta variable.

En cuanto a por qué exactamente command: echo $$foo no funciona, no estoy del todo seguro. Creo que si usa echo como ENTRYPOINT (porque no hay otro ENTRYPOINT definido en el Dockerfile ), entonces no hay Shell cuando inicia el contenedor, porque sobrescribe el /bin/bash predeterminado. echo en sí mismo parece ser incapaz de leer variables del entorno cuando no hay Shell "envuelto alrededor de él". Aunque las variables están claramente ahí (verifique esto con commmand: env y docker-compose up ), echo no sabe cómo obtenerlas.

Si alguien tiene una buena explicación para esto, estoy muy feliz de leerlo. :)

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