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

750
Visualizações
Montar un volumen en docker-compose condicionalmente

Tengo una configuración docker-compose.yml . En uno de los contenedores hay un servidor Tomcat y tiene un archivo .war predeterminado implementado en el directorio webapps .

Quiero tener la capacidad de pasar (anular) el archivo de war para ser implementado por algunos que residen en la máquina host. Creo que lo mejor sería tener la capacidad de cambiar / anular de alguna manera el inicio docker-compose : de forma predeterminada, quiero ejecutar la aplicación web (archivo war ) que está dentro del contenedor, pero quiero tener la posibilidad de montar un directorio desde mi host (por ejemplo, durante el desarrollo/depuración) si es necesario.

Actualmente, tengo la siguiente línea en mi docker-compose.yml , que se comenta si necesito el valor predeterminado.

 volumes: # By default, there is the latest version of the application already present in the container # If you want to provider the container with your own .war file, uncomment the following line # - ./application/webapps:/usr/local/tomcat/webapps

¿Hay una mejor manera de cómo lograr eso?

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

0

Dado que extend se eliminó en la versión 3, hay una nueva forma de anular la configuración al proporcionar múltiples parámetros -f donde el siguiente archivo extiende la configuración anterior

Los documentos se mezclan entre versiones https://docs.docker.com/compose/extends/#multiple-compose-files

es decir, para ejecutar en modo de desarrollo

 docker-compose -f docker-compose.yml -f docker-compose.dev.yml

Donde docker-compose.yml contiene la configuración completa y docker-compose.dev.yml solo agrega un volumen

 services: serviceA: volumes: -.:/usr/local/abc/service
over 4 years ago · Santiago Trujillo Relatório

0

En lugar de (no) montar un volumen comentando esa línea, usaría https://docs.docker.com/compose/extends/#example-use-case para ejecutar una extensión de servicio que especifica un volumen.

Hago esto para abordar dos problemas diferentes:

  • No especifico un volumen cuando la imagen de la ventana acoplable está destinada a ejecutarse en producción y tiene todos los archivos necesarios incluidos.
  • Especifico un volumen durante el desarrollo, para verificar los cambios en vivo.
over 4 years ago · Santiago Trujillo Relatório

0

Digamos que el nombre del archivo .war es "app.war"... podrías sobrescribirlo usando una variable env como esta:

volúmenes:
 - ./application/webapps/${APPLICATION_ENV}.war:/usr/local/tomcat/webapps/app.war

Luego, cuando necesite ejecutar un archivo war diferente, simplemente cambie el valor de APPPLICATION_ENV al que necesita para ejecutar y reinicie el contenedor.

No creo que docker-compose tenga "volúmenes condicionales", pero de esa manera podría cambiar app.war de acuerdo con su entorno.

Otra forma sería ejecutar un script después de que docker-compose up/start lo sobrescriba, y hacerlo solo cuando sea necesario, como:

docker-compose exec nombre-de-su-contenedor cp /a/volume/path/app.war /usr/local/tomcat/webapps/app.war
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