构建变量VSTS中的连接字符串

时间:2017-11-01 17:12:22

标签: docker azure-devops

我正在尝试使用构建变量从linux shell启动我的docker镜像,这些变量传递给连接字符串的环境变量。当我在容器中启动应用程序时,它会报告格式错误的连接字符串。当我使用硬编码的连接字符串编译它时应用程序运行,所以我知道它有效。我确定我可能没有逃脱;正确或类似的东西。我注意到它只是抛弃了每一件东西;在VSTS日志中的新行上。

这些是我在VSTS中创建的变量

ConnString1 "Server=172.17.0.4\;Port=5432\;Database=dbname\;User Id=userid\;Password=mypassword\;"
ConnString2 "Server=172.17.0.4\;Port=5432\;Database=dbname2\;User Id=userid\;Password=mypassword\;"

这是我的SSH命令

docker image pull mydockername/myimage
docker run -d -e ConnString1=$(ConnString1) -e ConnString2=$(ConnString2) -v /home/mylinuxuser/CONFIGS/LIVE:/bin/Debug/netcoreapp2.0/publish/Configs --restart always -p 5000:5000 --name containername mydockername/myimage

这是输出的片段

2017-11-01T15:21:40.7137030Z Current agent version: '2.120.1'
[CONNSTRING1] --> ["Server=172.17.0.4\;Port=5432\;Database=dbname\;User Id=userid\;Password=mypassword\;"]
[CONNSTRING2] --> ["Server=172.17.0.4\;Port=5432\;Database=dbname2\;User Id=userid\;Password=mypassword\;"]
2017-11-01T15:21:43.2862730Z docker run -d -e ConnString1="Server=172.17.0.4\;Port=5432\;Database=dbname\;User Id=userid\;Password=mypassword\;" -e ConnString2="Server=172.17.0.4\;Port=5432\;Database=dbname2\;User Id=userid\;Password=mypassword\;" -v /home/********/CONFIGS/LIVE:/bin/Debug/netcoreapp2.0/publish/Configs --restart always -p 5000:5000 --name containername teh********/myimage
2017-11-01T15:21:43.2883710Z Port=5432\
2017-11-01T15:21:43.2895830Z Database=dbname\
2017-11-01T15:21:43.2906910Z User Id=userid\
2017-11-01T15:21:43.2918030Z Password=mypassword\
2017-11-01T15:21:43.2931210Z " -e ConnString2="Server=172.17.0.4\
2017-11-01T15:21:43.2944180Z Port=5432\
2017-11-01T15:21:43.2956140Z Database=dbame2\
2017-11-01T15:21:43.2968130Z User Id=userid\
2017-11-01T15:21:43.2980310Z Password=mypassword\
2017-11-01T15:21:43.2994020Z " -v /home/********/CONFIGS/LIVE:/bin/Debug/netcoreapp2.0/publish/Configs --restart always -p 5000:5000 --name containername teh********/myimage
2017-11-01T15:21:43.4025020Z 33237871bd9f7e1b3cf6665386ae12111d91a5c9e36d0e3781fa0e77af92e42a

这些是放入容器的环境变量

ConnString2=Server=172.17.0.4Port=5432Database=beertradeauthUser Id=useridPassword=mypassword

ConnString1=Server=172.17.0.4Port=5432Database=beertradeUser Id=useridPassword=mypassword

1 个答案:

答案 0 :(得分:0)

从vsts github得到这个并且它起作用了

"任务不会更改您的内联脚本。它按原样运行。问题出在您的脚本中。

而不是:

docker run -d -e EnvVar1=$connstring1 ...

这有用吗? 从用户值中取出\和双引号 将脚本更改为(注释引号):docker run -d -e EnvVar1="${connstring1}" ..."