Son*_*nam 5 spring spring-boot kubernetes
我的 Dockerfile 中有以下内容来运行我的 Springboot 应用程序:
ENTRYPOINT [ "java", "-jar", "/code/myapp/target/myapp.jar", "--spring.profiles.active=$ENV_PROFILE"]
Run Code Online (Sandbox Code Playgroud)
我在 k8 YAML 配置中将环境变量(ENV_PROFILE)定义为:
spec:
containers:
- name: myspringboot
image: myrepo/myapp:latest
imagePullPolicy: Always
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: ENV_PROFILE
value: "test"
Run Code Online (Sandbox Code Playgroud)
但是,环境名称没有被注入到 java springboot 应用程序中。它在日志中显示为“$ENV_PROFILE”。我还尝试通过添加来使用 application.properties spring.profiles.active=$ENV_PROFILE
,但这也不起作用。
您还可以默认覆盖 Spring 属性(以及应用程序属性中定义的其他属性),而无需指定要在属性文件中传递的环境变量。环境变量的优先级高于属性文件值。
另请参阅Spring 外化配置。
例如:
spec:
containers:
- name: myspringboot
image: myrepo/myapp:latest
imagePullPolicy: Always
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: SPRING_PROFILES_ACTIVE
value: "test"
Run Code Online (Sandbox Code Playgroud)
这是因为您没有在 ENTRYPOINT 中使用 shell。只有 shell 可以进行环境变量替换。在您的情况下,您可以使用以下入口点:
ENTRYPOINT exec java -jar /code/myapp/target/myapp.jar --spring.profiles.active=$ENV_PROFILE
Run Code Online (Sandbox Code Playgroud)
此语法涉及调用“/bin/sh -c ENTRYPOINT”和“exec”确保java将成为容器内的PID 1。
归档时间: |
|
查看次数: |
4923 次 |
最近记录: |