2015-09-16 285 views
1

我目前使用Dockerfile來創建Tomcat 6.0.44。它看起來像這樣:使用Docker的tomcat映像時有一個自定義catalina.sh

從Tomcat:6.0.44-jre7

...

ADD catalina.sh在/ usr /本地/ Tomcat的/ bin中

從Dockerfile建設中的形象很好,但是當我去運行它時,出現以下錯誤:

exec:「catalina.sh」:$ PATH中找不到可執行文件。

任何想法如何解決這個問題?

我想要做的是傳遞參數「-DentityExpansionLimit = 100000」。有沒有比catalina.sh更簡單的方法呢?

任何幫助/建議將不勝感激。

編輯: 我在EC2上運行Redhat實例,並使用Docker擴展tomcat 6映像。

+0

它是catalina.sh還是catalins.sh?我猜你在Dockerfile的某個地方有個拼寫錯誤 – user2915097

+0

這是catalina.sh,我在帖子中輸入了一個錯字 – user5201726

+0

看起來像這樣可能適合你的賬單:http://stackoverflow.com/a/27615958/3503302 – brujoand

回答

2

我不知道你是否已經找到了解決方案,但這是我的建議。如果我正確理解你,你會想爲你的web應用程序設置一個Java VM選項。另外,您嘗試使用您自己的版本來更改catalina.sh腳本,以便在運行webapp時包含額外的Java VM選項。

我認爲你不應該改變你自己的圖片catalina.sh。腳本catalina.sh查看環境變量。您可以設置環境變量CATALINA_OPTS以包含此設置。 (還有一個環境變量JAVA_OPTS,但是當你還想將這些java選項應用到其他一些Tomcat本地進程(如根據tomcat文檔的停止進程和版本)時應該使用它。)

更新Tomcat版本(9)catalina.sh明確規定:

  1. 使用T的標準泊塢窗圖像:

    Do not set the variables in this script. Instead put them into a script setenv.sh in CATALINA_BASE/bin to keep your customizations separate.

    所以,你可以選擇兩個選項之一omcat並只添加你的webapp而不是你自定義的catalina.sh。運行此映像的容器時,請將CATALINA_OPTS環境變量設置爲值-DentityExpansionLimit=100000

  2. 設置一個setenv.sh腳本來設置CATALINA_OPTS變量。還要將此腳本添加到您的構建文件中。版本6 catalina.sh將在CATALINA_HOME和CATALINA_BASE文件夾中查找此腳本,並在其存在時執行該腳本。像這樣(我沒有測試它)。

    #!/bin/sh 
    echo "Setting JVM option Entity Expansion limit for application" 
    export CATALINA_OPTS="-DentityExpansionLimit=100000" 
    

選項2的優點是,你可以強制正確的默認JVM選項到圖像,而不是依靠人民運行形象正確地設置環境變量。

這有道理嗎?

1

當你將一個shell腳本複製到docker容器中時,大多情況是這樣,但忘記在腳本上設置可執行位。

在您的主機上,確保您執行chmod +x catalina.sh,然後執行docker build

另外我通常更喜歡在運行時使用卷覆蓋這些文件。但這又取決於你的方法。原因是明天,如果出現新版本的圖像,那麼你不需要重建你的dockerfiles。但那只是如果你可以使用官方圖片

相關問題