连接string在build立variablesVSTS

我正在尝试使用构buildvariables传递到连接string的环境variables从一个Linuxshell启动我的docker图像。 当我在容器中启动应用程序时,它会报告格式错误的连接string。 应用程序运行时,我编译连接string硬编码,所以我知道它的工作原理。 我相信我可能不会逃避 正确或类似的东西。 我注意到它只是抛弃了每一件事。 在VSTS日志中的新行上。

这些是我在VSTS中创build的variables

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 

这些是放入容器的环境variables

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

下面是Docker任务的链接,可以实现您的目标,而无需手动自行运行命令。 可能有帮助。

从vsts github得到这个,它的工作

“这个任务不会改变你的内联脚本,它是按原样运行的,问题出在你的脚本上。

代替:

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

这是否工作? 用\和双引号用户值更改脚本为(注意引号): docker run -d -e EnvVar1="${connstring1}" ..."