docker - 使用 Docker 将环境变量传递给 Spring Boot 应用程序不起作用
问题描述
我正在尝试将环境变量传递给 Spring Boot 应用程序,但它似乎不起作用。
码头工人运行命令:
docker run my-image -e TEST_VAR='testing'
春季启动主():
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);
//Read environmental variables:
Map<String, String> env = System.getenv();
System.out.println("TEST_VAR: "+env.get("TEST_VAR"));
}
}
输出:
TEST_VAR: null
如何使用 Docker 成功传递环境变量?
解决方案
docker run
确实提到
此外,操作员可以通过使用一个或多个 -e 标志来设置容器中的任何环境变量,甚至覆盖上面提到的那些,或者已经由开发人员使用 Dockerfile ENV 定义。
如果操作员在没有指定值的情况下命名环境变量,则命名变量的当前值将传播到容器的环境中:
但例子是:
docker run -e "deep=purple" -e today --rm alpine env
因此,请检查您的报价和参数顺序(正如BMitch所观察到的,在图像名称之后完成的任何参数都将传递CMD
给您的图像 ENTRYPOINT 命令,这不是您想要的):
docker run -e "TEST_VAR=testing" my-image
推荐阅读
- ios - 开始和结束标签不匹配 - Xcode Storyboard 错误
- angular - 如何从 nativescript Image 或 ImageAsset 获取像素数据
- javascript - 文件夹作为模块在文件夹中作为模块 NodeJS
- asp.net-core - 我的中间件将如何在管道中进行?
- r - 如何更新 r 中列的值而不替换它
- sql-server - 意外令牌“UpdateOptions.ExpandFull”
- java - Java 2D 数组无法将值写入最后一个值索引
- angular - 如何以角度4导出为pdf
- python - 在 keras 模型中使用带有 dropout 的 Native tensorflow RNNLayer
- java - 旅行计划算法的图结构