我已经在容器中配置了两个容器。
他们中的第一个致力于创建一个像这样的文件:
SPRING_DATASOURCE_USERNAME: username
SPRING_DATASOURCE_PASSWORD: password
我希望第二个容器从该位置读取以初始化其env变量。
我正在使用envFrom
,但我不太清楚如何使用它。
这是我的规范:
metadata:
annotations:
configmap.fabric8.io/update-on-change: ${project.artifactId}
labels:
name: wsec
name: wsec
spec:
replicas: 1
selector:
name: wsec
version: ${project.version}
provider: fabric8
template:
metadata:
labels:
name: wsec
version: ${project.version}
provider: fabric8
spec:
containers:
- name: sidekick
image: quay.io/ukhomeofficedigital/vault-sidekick:latest
args:
- -cn=secret:openshift/postgresql:env=USERNAME
env:
- name: VAULT_ADDR
value: "https://vault.vault-sidekick.svc:8200"
- name: VAULT_TOKEN
value: "34f8e679-3fbd-77b4-5de9-68b99217cc02"
volumeMounts:
- name: sidekick-backend-volume
mountPath: /etc/secrets
readOnly: false
- name: wsec
image: ${docker.image}
env:
- name: SPRING_APPLICATION_JSON
valueFrom:
configMapKeyRef:
name: wsec-configmap
key: SPRING_APPLICATION_JSON
envFrom:
???
volumes:
- name: sidekick-backend-volume
emptyDir: {}
答案 0 :(得分:1)
看起来您正在用第一个容器包装环境变量,然后在第二个容器中读取。 在这种情况下,您可以使用initContainers。
创建一个映射到emptyDir的卷。将其作为volumeMount挂载到initContainer(propertiesContainer)和主容器(springBootAppContainer)上。现在,两个容器都可以看到该目录。
image: properties/container/path
command: [bash, -c]
args: ["cp -r /location/in/properties/container /propsdir"]
volumeMounts:
- name: propsDir
mountPath: /propsdir
这会将属性放在/ propsdir中。当主容器启动时,它可以从/ propsdir
读取属性