java - 更新 Docker 中的自定义配置文件

标签 java spring docker jboss wildfly

我是Docker新手。我的要求是创建一个应该安装Wildfly服务器的docker文件,将war文件添加到Wildfly,添加自定义属性文件(其中包含将由应用程序读取的数据库连接字符串)

我的 Docker 文件

FROM jboss/wildfly
Add application.properties /opt/jboss/
ADD spring_application.war /opt/jboss/wildfly/standalone/deployments/

application.properties

db_url = jdbc:mysql://**server host name**:**port**
db_username = **username**
db_password = **password**

注意:上面文件中的服务器主机名、端口、用户名、密码应该是动态的

War 文件(Spring Rest 应用程序)将从 application.properties 读取参数

我能够成功安装 Wildfly 并部署应用程序。现在我需要在运行时在 application.properties 中传递参数。如果有人有解决方案,请帮助我。

最佳答案

您可以通过覆盖入口点脚本来做到这一点。下面是示例 run.sh 脚本,它在启动应用程序之前创建 application.properties 文件。

run.sh

#!/bin/bash -x
PROPERTIES=/opt/jboss/application.properties
echo "db_url = jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}" > ${PROPERTIES}
echo "db_username = ${MYSQL_USER}" >> ${PROPERTIES}
echo "db_password = ${MYSQL_PASS}" >> ${PROPERTIES}
exec /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 $@

Dockerfile

FROM jboss/wildfly
ADD run.sh /run.sh
CMD /run.sh
ADD spring_application.war /opt/jboss/wildfly/standalone/deployments/

运行它:

docker run -e MYSQL_HOST=mysqlhost -e MYSQL_USER=user -e MYSQL_PASS=pass wildflyimage

关于java - 更新 Docker 中的自定义配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889201/

相关文章:

Spring JavaMailSenderImpl 自动检测服务器可用

java - ForEach 循环中的 JSP 错误

java - spring 有什么方法可以记录特定 JPA 存储库的查询吗?

docker - 提供商连接错误无法连接到 Docker 守护程序

java - 向完整的 JMS 队列发送消息

java - RestFul java with mongodb 如何添加@QueryParam

java - 通过 JCheckBox 更改文本字段输入的字体颜色

java - 弹出一个框架

python - 使用 Docker 使用 Django 创建 mysql 数据库

docker - 如何在 docker build 中访问互联网?