Дефис и / или точка в имени переменной среды вызывает проблему

Это работает.

oc new-app --docker-image=docker.mycompany.com/myusername/my-imagestuff:latest -e SPRING_DATASOURCE_URL="jdbc:sqlserver://blahblahblah;” -e SPRING_DATASOURCE_USERNAME=“myUserName1” -e SPRING_DATASOURCE_PASSWORD=“MyP#ssword” -e

поэтому я вернулся и добавил имя класса источника данных

oc new-app --docker-image=docker.mycompany.com/myusername/my-imagestuff:latest -e SPRING_DATASOURCE_URL="jdbc:sqlserver://blahblahblah;” -e SPRING_DATASOURCE_USERNAME=“myUserName1” -e SPRING_DATASOURCE_PASSWORD=“MyP#ssword” -e SPRING_DATASOURCE_DRIVER-CLASS-NAME="com.microsoft.sqlserver.jdbc.SQLServerDriver"

и теперь мои развертывания терпят неудачу с этой ошибкой:

ошибка: неверное назначение параметра в "SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.microsoft.sqlserver.jdbc.SQLServerDriver"

Что такое волшебный соус из дефисов / дефисов и / или точек / точек в переменной и значении среды?

Спасибо!

1 ответ

Вы не можете использовать переменные среды, содержащие дефисы или точки, потому что эти символы недопустимы в именах переменных оболочки:

➜  tmp.0ngsgXro foo.bar=1
   zsh: command not found: foo.bar=1

➜  tmp.0ngsgXro foo-bar=1
   zsh: command not found: foo-bar=1

➜  tmp.0ngsgXro foo_bar=1
➜  tmp.0ngsgXro echo $foo_bar
   1

Вы пытаетесь создать в своем контейнере переменную среды, которая нарушает правила базовой оболочки.

Поэтому в отчаянии я изменил дефисы на подчеркивания.

Обратите внимание на последний аргумент SPRING_DATASOURCE_DRIVER_CLASS_NAME

oc new-app --docker-image=docker.mycompany.com/myusername/my-imagestuff:latest -e SPRING_DATASOURCE_URL="jdbc:sqlserver://blahblahblah;” -e SPRING_DATASOURCE_USERNAME=“myUserName1” -e SPRING_DATASOURCE_PASSWORD=“MyP#ssword” -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="com.microsoft.sqlserver.jdbc.SQLServerDriver"

И мое приложение работает. Поэтому я пишу этот ответ.

Я не понимаю этого вуду.

Если кто-то может объяснить это, я был бы благодарен.

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