Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

758
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda