环境变量名称中的连字符 and/or 句点导致问题

Hyphen and/or period in environment variable name is causing issue

这是有效的。

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"

现在我的部署失败并出现此错误:

error: invalid parameter assignment in "SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.microsoft.sqlserver.jdbc.SQLServerDriver"

连字符/连字符的神奇调味料是什么and/or环境变量和值中的点/点 ?

谢谢!

无奈之下,我将连字符改为下划线。

注意 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"

而且我的应用程序正在运行。所以我写下这个答案。

我不明白这个巫术。

如果有人能解释一下,我将不胜感激。

您无法使用包含连字符或句点的环境变量,因为这些字符在 shell 变量名称中无效:

➜  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

您正试图在您的容器中创建一个违反底层规则的环境变量 shell。