use*_*870 5 docker spring-boot
我正在尝试将环境变量传递给 Spring Boot 应用程序,但它似乎不起作用。
Docker 运行命令:
docker run my-image -e TEST_VAR='testing'
Run Code Online (Sandbox Code Playgroud)
Spring Boot main():
@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"));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
TEST_VAR: null
Run Code Online (Sandbox Code Playgroud)
如何使用 Docker 成功传递环境变量?
docker run 确实提到
此外,操作员可以通过使用一个或多个 -e 标志来设置容器中的任何环境变量,甚至可以覆盖上面提到的那些,或者已经由开发人员使用 Dockerfile ENV 定义的那些。
如果操作符命名环境变量而不指定值,则命名变量的当前值将传播到容器的环境中:
但例子是:
docker run -e "deep=purple" -e today --rm alpine env
Run Code Online (Sandbox Code Playgroud)
因此,请检查您的引号和参数顺序(正如BMitch 所观察到的,在图像名称之后完成的任何参数都将作为CMD您的图像 ENTRYPOINT 命令传递,这不是您想要的):
docker run -e "TEST_VAR=testing" my-image
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |