簡體   English   中英

通過 dockerfile 更改 Tomcat 配置 - context.xml

[英]Changing Tomcat config - context.xml through dockerfile

我在 Intellij 中開發了一個 web 應用程序(maven,tomcat),並設法通過 Intellij 中的“服務”選項卡創建了一個容器,這要歸功於簡單的部署配置。 在此過程中,我遇到緩存大小不夠,所以我手動在本地更改了 tomcat 的context.xml (添加<Resources cacheMaxSize="51200" /> ) 文件,之后應用程序運行順利。

總結 Intellij 中服務選項卡下的容器創建(參見圖像底部):

 - pulling an image: tomcat:9.0.65-jre8
 - container name
 - bind ports: 127.0.0.1:8080:8080
 - bind mounts: mount host path which contains the war WITH /usr/local/tomcat/webapps

雖然不確定,但我猜我創建的 war 文件已經考慮了我在context.xml文件中所做的更改,因為我的應用程序服務器是 tomcat 我下載並對其進行了更改。

但是,我還需要創建一個帶有 dockerfile 的容器:

我的 dockerfile 是:

FROM maven:3.8.4-jdk-8 as maven_builder
COPY . /usr/src/maven_pdfparse
WORKDIR /usr/src/maven_pdfparse
RUN mvn clean install -f /usr/src/maven_pdfparse && mkdir /usr/src/wars/
RUN find /usr/src/maven_pdfparse/ -iname '*.war' -exec cp {} /usr/src/wars/ \;
ADD pom.xml .

FROM tomcat:9.0.65-jre8
COPY --from=maven_builder /usr/src/wars/* /usr/local/tomcat/webapps

當我在 docker 上運行此程序時,我再次遇到“緩存不足”問題。

那么如何在創建 dockerfile 時對 context.xml 進行相同的更改?

或者有沒有辦法在我通過部署配置創建容器時自動獲取 dockerfile?

在此處輸入圖像描述

如果您希望添加或修改context.xml文件,您有幾個選項可供選擇。

  1. 作為映像構建的一部分,您可以修改映像中已有的context.xml文件。 使用sed等命令行工具添加RUN命令,將所需的<Resources>元素添加到文件中。
  2. 您還可以擁有該文件的預修改版本,然后將其復制到圖像中以覆蓋現有版本。
  3. 在調用通常的 tomcat 啟動腳本之前,您可以添加一個修改context.xml的自定義啟動命令(例如,按照選項 1 使用sed )。 使用這種機制,您還可以從環境變量中獲取要使用的cacheMaxSize值,從而允許對值進行運行時控制。

請檢查這個答案

Tomcat 8 拋出 - org.apache.catalina.webresources.Cache.getResource 無法添加資源

您需要在哪里更新context.xml並通過復制context.xml重建您的圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM