gpt4 book ai didi

tomcat - 在 docker 容器中处理 tomcat 应用程序的配置

转载 作者:行者123 更新时间:2023-11-28 22:16:40 25 4
gpt4 key购买 nike

我有一个在 Tomcat 应用程序服务器中运行的应用程序。它有一堆设置,可能会在不同环境之间发生变化。例如,要使用的远程 API 的数据库凭据或主机/端口。

它们的默认值被烘焙到 .war 文件中。基本上,它们在 web.xml 中。通过 docker run 的参数使它们可变的最佳方法是什么?

到目前为止,我正在考虑将 $CATALINA_HOME/conf 制作成一个卷,并在 docker 主机上简单地设置上下文文件。也许有更好的方法?

我找不到使用环境变量配置tomcat的方法。我是否必须更改应用程序本身才能读取这些变量?

简单来说,有哪些方法可以在 docker 中自定义 tomcat 应用程序,而无需在构建时将配置烘焙到镜像本身?

如果重要的话,我使用的是来自 docker hub 的官方 tomcat 镜像。

最佳答案

我通过在运行时传递环境变量来解决这个问题,通过 swarm 或 docker run -e 并在入口点脚本中使用 envsubstr 来交换我需要的内容。

Docker 文件:

ENTRYPOINT: ["my_script"]

我的脚本:

envsubstr < server.dist.xml > server.xml
catalina.sh start

server.dist.xml:

<Resource name="jdbc/${DRIVER}" auth="Container"
type="javax.sql.DataSource" driverClassName="${DRIVER_NAME}"
url="${DRIVER_URL}"
username="${NAME}" password="${PASSWORD}" maxActive="20" maxIdle="10"
maxWait="-1"/>

envsubstrgettext 的一部分,因此请确保它在您的图像中可用。

关于tomcat - 在 docker 容器中处理 tomcat 应用程序的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com