Я пытаюсь упростить процесс развертывания. В настоящее время мы создаем файл jar для нашего приложения Spring Boot, а затем создаем образ со следующим файлом DockerFile.
FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
COPY /conf/myapp-conf.yaml /etc/k8t/myapp-conf.yaml
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar", "--spring.config.location=/etc/k8t/myapp-conf.yaml"]
В нашем k8t мы создаем Configmap (app-config). Итак, наш файл deployment.yaml похож на
containers:
- image: [DTRServer]/projectname/myappimage:0.2.4-43
imagePullPolicy: Always
name: myapp
ports:
- containerPort: 8080
volumeMounts:
- name: myapp-conf
mountPath: /etc/k8t/
volumes:
- name: myapp-conf
configMap:
name: myapp-conf
Почему мне нужно указывать spring.config.location в Dockerfile при сборке? Мы собираемся использовать Configmap. Поэтому я удалил информацию о конфигурационном файле из Dockerfile и deployment.yaml.
FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar"]
containers:
- image: [DTRServer]/projectname/myappimage:0.2.4-43
imagePullPolicy: Always
name: myapp
ports:
- containerPort: 8080
volumes:
- name: myapp-conf
configMap:
name: myapp-conf
Тогда поду это не нравится. Он жалуется, что не может найти значения конфигурации. Как создать образ без информации о конфигурации и запустить модуль с помощью Configmap?