2017-01-21 5 views
7

У меня есть конфигурация docker-compose.yml. В одном из контейнеров есть сервер Tomcat, и у него есть файл по умолчанию .war, развернутый в каталоге webapps.Установить громкость в докер-компоновке условно

Я хочу иметь возможность передавать (переопределять) архив war для развертывания некоторыми, которые находятся на главной машине. Я думаю, что лучше всего было бы иметь возможность как-то переключать/отменять запуск docker-compose: по умолчанию я хочу запустить файл webapp (war), который находится внутри контейнера, но я хочу иметь возможность монтировать каталог с моего хоста (например, при разработке/отладке), если это необходимо.

В настоящее время у меня есть следующая строка в моем docker-compose.yml, которая закомментирована, если мне нужно значение по умолчанию.

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 

Есть ли лучший способ, как достичь этого?

ответ

0

Допустим, что .war имя файла «app.war» ... вы могли бы переписать его, используя переменную ENV так:

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

Затем, когда вам нужно запустить другой архив войны просто изменить значение APPPLICATION_ENV, которое нужно запустить и перезапустить контейнер.

Я не думаю, что docker-compose имеет «условные тома», но таким образом вы можете изменить app.war в соответствии с вашей средой.

Другой путь будет запущен скрипт после docker-compose up/start перезаписать его, и делать это только тогда, когда это необходимо, как:

 
docker-compose exec your-container-name cp /a/volume/path/app.war /usr/local/tomcat/webapps/app.war 
5

Вместо (не) монтировании тома закомментировать эту строку, я хотел бы использовать https://docs.docker.com/compose/extends/#example-use-case, чтобы запустить расширение службы, задающее громкость.

Я делаю это, чтобы решить две различные проблемы:

  • Я не задающий объем, когда докер изображение предназначено для работы в производстве и имеет все необходимые файлы в комплекте в нем.
  • Я определяю объем во время разработки, чтобы проверить изменения в реальном времени.