2017-01-21 12 views
7

Mam konfigurację docker-compose.yml. Jednym z kontenerów jest serwer Tomcat, który ma domyślny plik .war wdrożony w katalogu webapps.Montowanie woluminu w dokowaniu - komponowanie warunkowo

Chcę mieć możliwość przekazania (przesłonięcia) archiwum war, które ma zostać wdrożone przez niektóre pliki znajdujące się na komputerze-hoście. Myślę, że najlepiej byłoby mieć możliwość jakoś zmienić/przesłonić począwszy od docker-compose: domyślnie chcę uruchomić plik webapp (war), który jest wewnątrz kontenera, ale chcę mieć możliwość zamontowania katalogu z mojego hosta (na przykład podczas programowania/debugowania), jeśli zajdzie taka potrzeba.

Obecnie mam następujący wiersz w moim docker-compose.yml, który jest komentowany, jeśli potrzebuję domyślnego.

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 

Czy istnieje lepszy sposób, jak to osiągnąć?

Odpowiedz

0

Powiedzmy, że .war nazwa pliku jest „app.war” ... można go zastąpić przy użyciu zmiennej env tak:

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

Wtedy, gdy trzeba uruchomić inny plik war tylko zmiana wartość APPPLICATION_ENV do tej, którą należy uruchomić i ponownie uruchomić kontener.

Nie sądzę, że docker-compose ma "wolumeny warunkowe", ale w ten sposób można zmienić app.war zgodnie ze swoim środowiskiem.

Innym sposobem byłoby uruchomienie skryptu po docker-compose up/start go zastąpić, i robią to tylko w razie potrzeby, jak:

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

zamiast (nie) montowania woluminu zakomentowanie tę linię, użyłbym https://docs.docker.com/compose/extends/#example-use-case, aby uruchomić rozszerzenie usługi, które określa wolumin.

zrobić to do rozwiązania dwa różne problemy:

  • ja nie określono objętość, gdy obraz doker jest przeznaczona do pracy w produkcji i posiada wszystkie niezbędne pliki spakowane w nim.
  • Określam wolumin podczas programowania, aby sprawdzić zmiany na żywo.
Powiązane problemy