我正在尝试使用目录配置映射作为运行Spring Boot应用程序的Docker容器内部的挂载卷。我正在将某些安装路径传递给诸如spring application.yaml之类的东西,但是由于找不到配置,因此似乎没有按预期方式进行安装。例如
像这样创建configmap
kubectl create configmap example-config-dir \
--from-file=/example/config/
Kubernetes yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: example
labels:
app: example
spec:
replicas: 1
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example
image: example:latest
ports:
- containerPort: 8443
volumeMounts:
- name: config-vol
mountPath: /config
volumes:
- name: config-vol
configMap:
name: example-config-dir
还有Dockerfile(还有其他步骤可以复制我未详细介绍的jar文件)
VOLUME /tmp
RUN echo "java -Dspring.config.location=file:///config/ -jar myjarfile.jar" > ./start-spring-boot-app.sh"
CMD ["sh", "start-spring-boot-app.sh"]
答案 0 :(得分:1)
如Create ConfigMaps from Directories和Create ConfigMaps from files中所述,当您使用--from-file
创建ConfigMap时,文件名成为存储在ConfigMap数据部分中的键 。文件内容成为键的值。
按照您想要的方式进行操作,更好的方法是像这样创建yml
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
然后像这样申请:
kubectl create -f https://k8s.io/examples/configmap/configmap-multikeys.yaml
运行pod时,命令ls /config
会在下面产生输出:
special.level
special.type
您做的方式应该生成一个与原始文件同名的文件,并在其中包含文件的内容。