2017-01-21 29 views
7

Bir docker-compose.yml yapılandırmasına sahibim. Kapsayıcılardan biri, bir Tomcat sunucusudur ve webapps dizininde dağıtılan bazı varsayılan .war dosyasına sahiptir.Docker bileşeninde bir birimi bağlama koşullu olarak

Ana makinede bulunan bazılarının dağıtması için war arşivini geçirme (geçersiz kılma) yeteneğine sahip olmak istiyorum. Bence en iyisi, docker-compose'un başlangıcını değiştirme/geçersiz kılma yeteneğine sahip olmaktır: varsayılan olarak, kapsayıcının içinde bulunan webapp'u (war dosya) çalıştırmak istiyorum, ancak ana bilgisayarımdan bir dizin kurma olanağına sahip olmak istiyorum. Gerekirse (örneğin geliştirme/hata ayıklama sırasında).

Şu anda, docker-compose.yml adresinde, varsayılana ihtiyacım varsa yorum yapılan şu satırı kullanıyorum.

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 

Bunu nasıl başarmanın daha iyi bir yolu var mı? Sadece değişiklik farklı bir savaş dosyasını çalıştırmak için gerektiğinde bu

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

:

cevap

0

Böyle bir env değişkeni kullanarak üzerine yazabilirsiniz ... en .war dosya adı "app.war" olduğunu varsayalım Kapsayıcıyı çalıştırıp yeniden başlatmanız gereken APPPLICATION_ENV değeri.

docker-compose'un "koşullu birimleri" bulunmadığını düşünüyorum, ancak bu şekilde app.war öğesini ortamınıza göre değiştirebilirsiniz.

Diğer yolu üzerine yazmak docker-compose up/start sonra bir komut dosyası çalıştıran ve yalnızca gerektiğinde gibi bunu olacaktır: Bunun yerine (değil) o satırı dışında yorum bir hacme montaj

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

, ben kullanırım Bir birimi belirten bir hizmet uzantısı çalıştırmak için https://docs.docker.com/compose/extends/#example-use-case. liman işçisi görüntü üretiminde kendi kendine çalışması gereken ve içinde paketlenmiş gerekli tüm dosyaları vardır aldığınızda bir hacme belirtmeyen

  • :

    Bu iki farklı sorunları çözmek için yapmak.
  • Canlı değişiklikleri kontrol etmek için geliştirme sırasında bir birim belirtiyorum.
İlgili konular