环境变量名称中的连字符和/或句点引起问题

时间:2019-01-22 15:32:17

标签: openshift openshift-3 openshift-enterprise

这正在工作。

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”

环境变量和值中连字符/连字符和/或句点/点的魔力所在是什么? ?

谢谢!

2 个答案:

答案 0 :(得分:1)

您无法使用包含连字符或句点的环境变量,因为这些字符在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规则的环境变量。

答案 1 :(得分:0)

因此,出于绝望,我将连字符更改为下划线。

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

我的应用正在运行。所以我正在写这个答案。

我不明白这个伏都教徒。

如果有人可以解释,我将不胜感激。