Передать файл application.conf во время развертывания в настройке Docker, созданной с использованием jar - PullRequest
2 голосов
/ 03 августа 2020

Мое требование - передать файл application.conf для приложения Scala на основе платформы Play во время развертывания в настройке Docker в Kubernetes, чтобы поддерживать значения, передаваемые с использованием secrets. Однако у меня есть ограничение: я использую толстую банку приложения в качестве точки входа в Dockerfile:

...
EXPOSE 9000
ENTRYPOINT java -jar myapp.jar

Я хочу создать толстую банку со ссылкой на этот application.conf, который будет передан при развертывании time (используя секреты), с помощью команды SBT, что-то вроде:

sbt -Dconfig.file="/opt/myorg/myapp/application.conf" clean publish

Но это не сработает, поскольку файл будет доступен только во время развертывания. Как я могу этого добиться?

1 Ответ

1 голос
/ 04 августа 2020

Вам следует изменить развертывание так, чтобы контейнер брал откуда-то этот файл, или измените способ получения необходимых свойств. Например:

  • вы можете выполнить команду ssh / scp, которая скопирует файл в контейнер и поддержит это с помощью k8s, потому что по умолчанию он будет перемешивать / воссоздавать контейнеры в кластере (это ужасное решение , но вы можете получить из него идею)
  • вы можете присоединить внешний том с этим файлом к ​​контейнеру, а затем передать путь процессу java. Что-то вроде этого должно работать ENTRYPOINT java -jar myapp.jar -Dconfig.file="/opt/myorg/myapp/application.conf".
  • добавить конфигурацию в виде файла в jar во время сборки (но, как я понял, время сборки не так)
  • измените способ получения вашего приложения properties, чтобы он мог получить их из переменных env и определить env во время процесса развертывания

Я не пользователь k8s, поэтому я не могу сказать вам точный способ сделать это. Но я надеюсь, что кое-что из этого может вам помочь.

...