Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

748
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!