Docker 在wildlfy数据源定义(文件)中使用环境变量

Docker 在wildlfy数据源定义(文件)中使用环境变量,docker,jboss,environment-variables,wildfly,datasource,Docker,Jboss,Environment Variables,Wildfly,Datasource,我想将我的WAR应用程序重新打包为自我包含的docker映像-目前仍作为WAR部署到wildfly 19。 因为我不想让数据库密码和/或URL成为docker映像的一部分,所以我希望它可以从外部作为环境变量进行配置 因此,我当前的docker图像包括一个wildfly数据源定义,即-ds.xml文件,其中包含env占位符,因为根据 和其他来源,这应该是可能的 我的DS文件是 <datasources xmlns="http://www.jboss.org/ironjacam

我想将我的WAR应用程序重新打包为自我包含的docker映像-目前仍作为
WAR
部署到wildfly 19。 因为我不想让数据库密码和/或URL成为docker映像的一部分,所以我希望它可以从外部作为环境变量进行配置

因此,我当前的docker图像包括一个wildfly数据源定义,即
-ds.xml
文件,其中包含
env
占位符,因为根据

和其他来源,这应该是可能的

我的DS文件是

<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
    <datasource jndi-name="java:jboss/datasources/dbtDS" pool-name="benchmarkDS">
        <driver>dbt-datasource.ear_com.mysql.jdbc.Driver_5_1</driver>
        <connection-url>${DB_CONNECTION_URL,env.DB_CONNECTION_URL}</connection-url>
        <security>
            <user-name>${DB_USERNAME,env.DB_USERNAME}</user-name>
            <password>${DB_PASSWORD,env.DB_PASSWORD}</password>
        </security>

        <pool>[...]</pool>
    </datasource>
</datasources>
最后一行说,
DS\u CONNECTION\u URL
似乎是空的-尝试了几种组合-相信我

Wrong driver class [com.mysql.jdbc.Driver] for this connection URL []
我要开始我的容器

docker run --name="dbt" --rm -it -p 8080:8080 -p 9990:9990     -e DB_CONNECTION_URL="jdbc:mysql://127.0.0.1:13306/dbt?serverTimezone=UTC"     -e DB_USERNAME="dbt"     -e DB_PASSWORD="_dbt" dbt
我甚至将
standalone.sh
修改为输出环境,并且
DB\u CONNECTION\u URL
就在那里

那么,启用wildfly替换DS文件中的占位符,我做错了什么呢?? 它们似乎已被处理,因为它们的计算结果为空。但它们应该包含一些东西

如有任何建议,我们将不胜感激

当前Dockerfile

[...] building step above [...]

FROM jboss/wildfly:20.0.1.Final
USER root
RUN yum -y install zip wget && yum clean all

RUN sed -i 's/echo "  JAVA_OPTS/echo "  DB_CONNECTION_URL: $DB_CONNECTION_URL     JAVA_OPTS/g' /opt/jboss/wildfly/bin/standalone.sh && \
    cat /opt/jboss/wildfly/bin/standalone.sh
RUN sed -i 's/<spec-descriptor-property-replacement>false<\/spec-descriptor-property-replacement>/<spec-descriptor-property-replacement>true<\/spec-descriptor-property-replacement><jboss-descriptor-property-replacement>true<\/jboss-descriptor-property-replacement><annotation-property-replacement>true<\/annotation-property-replacement>/g' /opt/jboss/wildfly/standalone/configuration/standalone.xml


USER jboss
COPY --from=0 /_build/dbt-datasource.ear /opt/jboss/wildfly/standalone/deployments/
ADD target/dbt.war /opt/jboss/wildfly/standalone/deployments/
[…]在[…]上方建造台阶
来自jboss/wildfly:20.0.1.Final
用户根
运行yum-y安装zip wget&&yum全部清除
运行sed-i的/echo“JAVA_OPTS/echo”DB_CONNECTION_URL:$DB_CONNECTION_URL JAVA_OPTS/g'/opt/jboss/wildfly/bin/standalone.sh&&\
cat/opt/jboss/wildfly/bin/standalone.sh
运行sed-i's/false/truetrue/g'/opt/jboss/wildfly/standalone/configuration/standalone.xml
用户jboss
复制--from=0/_build/dbt-datasource.ear/opt/jboss/wildfly/standalone/deployments/
添加target/dbt.war/opt/jboss/wildfly/standalone/deployments/

我对自己做了回答-也许以后知道对别人有好处:

-ds.xml
文件中的占位符不受支持(!)

我通过使用
sed
进行修补,在
standalone.xml
中添加了相同的
datasource
定义,现在它可以正常工作,无需进一步修改

=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss/wildfly

  JAVA: /usr/lib/jvm/java/bin/java

  DB_CONNECTION_URL: jdbc:mysql://127.0.0.1:13306/dbt?serverTimezone=UTC     JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true  --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED

=========================================================================

11:00:34,362 INFO  [org.jboss.modules] (main) JBoss Modules version 1.10.1.Final
11:00:34,854 INFO  [org.jboss.msc] (main) JBoss MSC version 1.4.11.Final
11:00:34,863 INFO  [org.jboss.threads] (main) JBoss Threads version 2.3.3.Final
[...]
[...] building step above [...]

FROM jboss/wildfly:20.0.1.Final
USER root
RUN yum -y install zip wget && yum clean all

RUN sed -i 's/echo "  JAVA_OPTS/echo "  DB_CONNECTION_URL: $DB_CONNECTION_URL     JAVA_OPTS/g' /opt/jboss/wildfly/bin/standalone.sh && \
    cat /opt/jboss/wildfly/bin/standalone.sh
RUN sed -i 's/<spec-descriptor-property-replacement>false<\/spec-descriptor-property-replacement>/<spec-descriptor-property-replacement>true<\/spec-descriptor-property-replacement><jboss-descriptor-property-replacement>true<\/jboss-descriptor-property-replacement><annotation-property-replacement>true<\/annotation-property-replacement>/g' /opt/jboss/wildfly/standalone/configuration/standalone.xml


USER jboss
COPY --from=0 /_build/dbt-datasource.ear /opt/jboss/wildfly/standalone/deployments/
ADD target/dbt.war /opt/jboss/wildfly/standalone/deployments/