Spring 启动 - 读取属性文件中的容器环境变量
Spring Boot - read container environment variables in properties file
我使用:
Spring 开机
微服务(容器化)
Docker
Kubernetes
我的情况如下:
我必须生成 link:
https://dev-myapp.com
或 https://qa-myapp.com
取决于我的服务所在的环境 运行ning (DEV, QA)
取决于环境(DEV、QA)。我有一个 Spring 配置文件,但在这个配置文件下,我的应用程序可以 运行 在 kubernetes 中的两种环境类型:DEV 或 QA。我想生成正确的 link - 从我的属性文件中读取它:
@Value("${email.body}")
private String emailBody;
application.yaml:
email:
body: Click on the following URL: ${ENVIRONMENT_URL:}/edge/invitation?code={0}&email={1}
开发(Kubernetes):
工作负载文件夹中的清单(DEV 分支,这次与 https://qa-myapp.com 的 qa 分支螺母相同):
apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
...
...
containers:
env:
- name: ENVIRONMENT_URL
value: https://dev-myapp.com
那么我可以从我的 Spring 属性文件中的 kubernetes 容器中读取该值吗?我想获得 email.body 属性,具体取决于我的服务所在的容器 运行ning。
是的,这是可能的,并且已更正 yaml
的语法
apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
command: ["/bin/sh", "-c", "env | grep ENVIRONMENT_URL"]
env:
- name: ENVIRONMENT_URL
value: https://myapp.com. #Indedntation Changed
ports:
- containerPort: 80
我使用: Spring 开机 微服务(容器化) Docker Kubernetes
我的情况如下:
我必须生成 link:
https://dev-myapp.com
或 https://qa-myapp.com
取决于我的服务所在的环境 运行ning (DEV, QA)
取决于环境(DEV、QA)。我有一个 Spring 配置文件,但在这个配置文件下,我的应用程序可以 运行 在 kubernetes 中的两种环境类型:DEV 或 QA。我想生成正确的 link - 从我的属性文件中读取它:
@Value("${email.body}")
private String emailBody;
application.yaml:
email:
body: Click on the following URL: ${ENVIRONMENT_URL:}/edge/invitation?code={0}&email={1}
开发(Kubernetes):
工作负载文件夹中的清单(DEV 分支,这次与 https://qa-myapp.com 的 qa 分支螺母相同):
apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
...
...
containers:
env:
- name: ENVIRONMENT_URL
value: https://dev-myapp.com
那么我可以从我的 Spring 属性文件中的 kubernetes 容器中读取该值吗?我想获得 email.body 属性,具体取决于我的服务所在的容器 运行ning。
是的,这是可能的,并且已更正 yaml
apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
command: ["/bin/sh", "-c", "env | grep ENVIRONMENT_URL"]
env:
- name: ENVIRONMENT_URL
value: https://myapp.com. #Indedntation Changed
ports:
- containerPort: 80