【问题标题】:Passing Tomcat parameters to Docker将 Tomcat 参数传递给 Docker
【发布时间】:2015-12-01 10:49:41
【问题描述】:

我是 Docker 新手,我有一个问题,我似乎找不到答案。 我正在拍摄一个 Docker 映像(consol/tomcat-7.0)并编写了一个 Dockerfile 来加载此映像,复制我的 war 文件并将具有唯一数据库连接详细信息和默认主机的 server.xml 复制到一个新映像中。 如果我正在运行许多带有此图像的容器,那么让每个容器使用相同的 war 文件但连接到不同的数据库并在 server.xml 中具有不同 URL 的正确方法是什么? 我目前正在使用 Dockerfile 构建图像,每次我想要一个新实例时都有不同的细节,这似乎是一种浪费。

所以每次我想要一个新实例时,我都会使用这个 Dockerfile 运行“构建”:

FROM consol/tomcat-7.0:latest
MAINTAINER xxx
LABEL version="1.0"
EXPOSE 80 443
RUN mkdir /vhost/
COPY FILES /vhost/ /vhost/    # my war files - same on every instance
COPY FILES/server.xml /opt/tomcat/conf/ # my config file - different on each instance

然后运行这个新图像。

这样做的正确方法是什么?

【问题讨论】:

    标签: database tomcat configuration docker dockerfile


    【解决方案1】:

    docker 容器的典型方法是通过环境变量传递。

    a solution to pass the port via command line 上扩展server.xml 需要修改,以便它接收来自JAVA_OPTS 的属性

    例如server.xml

    <GlobalNamingResources>
        <Resource Name="jdbc/Addresses"
            auth="Container"
            type="javax.sql.Datasource"
            username="auser"
            password="Secret"
            driverClassName="com.mysql.jdbc.Driver"
            description="Global Address Database"
            url="${jdbc.url}" />
    </GlobalNamingResources>
    

    然后你可以在命令行的属性中传递${jdbc.url}的值。

    JAVA_OPTS="-Djdbc.url=jdbc:mysql:mysqlhost:3306/"
    

    在运行 docker 镜像时,您使用 -e 标志在运行时设置此环境变量

    $ docker run -it -e "JAVA_OPTS=-Djdbc.url=jdbc:mysql:mysqlhost:3306/" --rm myjavadockerimage /opt/tomcat/bin/deploy-and-run.sh
    

    如果您需要将mysqlhost 映射到特定的IP 地址,还可以添加--add-host

    【讨论】:

    • 谢谢。即使我已经链接了它,我的“mysqlhost”链接容器也不会在我的 META-INF/context.xml 文件中解析为 IP。有什么想法吗?
    【解决方案2】:

    我能想到的至少有两种选择:

    • 如果 server.xml 支持环境变量,您可以通过--env 甚至--env-file 将数据库连接详细信息传递给容器。请注意,这具有一定的安全隐患。
    • 另一种选择是将特定实例的 server.xml 通过--volume 挂载到容器中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2019-05-01
    相关资源
    最近更新 更多