我试图在Docker容器中设置一些环境变量。
以下工作正常
ENV CORE_SQL_URL "jdbc:postgresql://db:5432/db"
ENV JAVA_OPTS -DCORE_SQL_URL=${CORE_SQL_URL}
但是,如果我想覆盖CORE_SQL_URL,我怎么能强制更新JAVA_OPTS。
使用docker run -e运行容器“CORE_SQL_URL = jdbc:postgresql:// db:5432 / db2”会产生以下结果
JAVA_OPTS=-DCORE_SQL_URL=jdbc:postgresql://db:5432/db
CORE_SQL_URL=jdbc:postgresql://db:5432/db2
答案 0 :(得分:5)
Dockerfile中的ENV
命令在构建时执行,而-e
到docker run
的标志当然是运行时参数。构建时参数无法对您传入的运行时参数执行任何操作,因此您必须传入两个环境变量才能获得所需的结果。
答案 1 :(得分:0)
我最终只是在启动我的java应用程序之前在我的ENTRYPOINT调用的shell脚本中设置了JAVA_OPTS。