Spring 启动 - 读取属性文件中的容器环境变量

Spring Boot - read container environment variables in properties file

我使用: Spring 开机 微服务(容器化) Docker Kubernetes

我的情况如下:

我必须生成 link: https://dev-myapp.comhttps://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