Mount a volume in docker-compose conditionally

前端 未结 3 866
慢半拍i
慢半拍i 2021-01-07 17:07

I have a docker-compose.yml configuration. In one of the containers there is a Tomcat server and it has some default .war file deployed in we

相关标签:
3条回答
  • 2021-01-07 17:40

    Instead of (not) mounting a volume commenting out that line, I would use https://docs.docker.com/compose/extends/#example-use-case to run a service extension that specifies a volume.

    I do this to tackle two different problems:

    • I don't specify a volume when the docker image is meant to run in production and has all the necessary files bundled in it.
    • I specify a volume during development, to check live changes.
    0 讨论(0)
  • 2021-01-07 17:46

    Since extend has been removed in version 3 there's a new way of overriding settings by providing multiple -f params where the next file extends the previous config

    The docs are mixed between versions https://docs.docker.com/compose/extends/#multiple-compose-files

    i.e. to run in development mode

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

    Where docker-compose.yml contains the full config and docker-compose.dev.yml only adds a volume

    services:
      serviceA:
        volumes:
          -.:/usr/local/abc/service
    
    0 讨论(0)
  • 2021-01-07 17:50

    Let's say that the .war filename is "app.war"... you could overwrite it using a env variable like this:

    volumes:
     - ./application/webapps/${APPLICATION_ENV}.war:/usr/local/tomcat/webapps/app.war
    

    Then when you need to run a different war file just change the APPPLICATION_ENV value to the one you need to run and restart the container.

    I don't think docker-compose does have "conditional volumes", but that way you could change the app.war according with your environment.

    Other way would be running a script after the docker-compose up/start to overwrite it, and do it only when needed, like:

    docker-compose exec your-container-name cp /a/volume/path/app.war /usr/local/tomcat/webapps/app.war
    
    0 讨论(0)
提交回复
热议问题