Дефис и / или точка в имени переменной среды вызывает проблему
Это работает.
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"
И мое приложение работает. Поэтому я пишу этот ответ.
Я не понимаю этого вуду.
Если кто-то может объяснить это, я был бы благодарен.