Как я могу запустить приложение весенней загрузки в докере с профилем?

У меня есть простой проект с весенней загрузкой:

-resources
 -application.yaml
 -application-test.yaml

А у меня есть Dockerfile:

FROM openjdk:8-jdk-alpine
EXPOSE 8080
ADD micro-boot.jar micro-boot.jar
ENTRYPOINT ["java","-Dspring.profiles.active=test" "-jar","/micro-boot.jar"]

1) Создаю образ - C:\micro-boot>docker build -f Dockerfile -t micro-boot .

2) показать все изображения - C:\micro-boot>docker image ls -a

micro-boot   latest  ccc9a75ebc24  4 seconds ago 112MB

3) попробуй завести C:\micro-boot>docker image ls -a

И получаю ошибку:

/bin/sh: [java,-Dspring.profiles.active=test: not found

Связано: stackoverflow.com/questions/21553353/…

rdas 18.04.2019 20:40

Вы должны передать spring.profiles.active с помощью команды запуска docker или docker-compose, что повысит гибкость. Пример: docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test"

huytmb 19.04.2019 03:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
25
2
31 388
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Здесь опечатка

ENTRYPOINT ["java","-Dspring.profiles.active=test" comma missing here "-jar","/micro-boot.jar"]

У нас есть 3 пути:

1. Передача профиля Spring в Dockerfile

FROM openjdk:8-jre-alpine
...
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=test","-jar","app.jar"]

2. Передача профиля Spring в Docker run

docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test" --name my-app:latest

3. Передача профиля Spring в DockerCompose

version: "3.5"
services:
  my-app:
     image: my-app:latest
     ports:
       - "8080:8080" 
     environment:
       - "SPRING_PROFILES_ACTIVE=test"

представьте, что у вас есть 4 среды dev sys staging prod, использующие kubernetes и динамически развертывающие контейнеры, у вас не может быть другого cmd, как вы показали «docker run», таким образом, вы должны иметь env var кластера env, чтобы быть используется внутри файла докера, например $PROFILE

Tiago Medici 04.10.2020 09:56

@TiagoMedici, вы правы, но это выходит за рамки вопроса. Я обновлю ответ для Kubernetes env. спасибо за Ваше внимание

huytmb 05.10.2020 05:54

«2. Передача профиля Spring в Docker run» потрясающая!

Igor Kanshyn 20.08.2021 03:55

Другие вопросы по теме