2017-11-01 8 views
0

接続文字列の環境変数に渡すビルド変数を使用して、Linuxシェルからドッカーイメージを開こうとしています。私がコンテナでアプリを起動すると、不正な接続文字列が報告されます。私はそれが動作することを知っているので、私は接続文字列をハードコードとコンパイルするときにアプリケーションが実行されます。私はおそらく私がエスケープしていないと確信しています。正しくまたは何かのように。私はそれが後にそれぞれの事をダンプすることに気付く。 VSTSログの新しい行に入力します。ビルド変数の接続文字列VSTS

これらは私がVSTSで作成した変数は

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 
の抜粋である私のSSHコマンドこれは

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\;" 

です

これらはコンテナ

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

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

接続文字列で '' \ ''を削除するとどうなりますか? ConnectionString ":"サーバー= 172.17.0.4;ポート= 5432;データベース= dbname;ユーザーID =ユーザーID;パスワード= mypassword; " –

答えて

0

は、VSTS githubのからこれを持って、それは問題があなたのスクリプトである「タスクは、あなたのインラインスクリプトを変更しないでと、それはそれを実行します

を働いた

の代わりに:。。。

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

この作業を行い テイク\と二重引用符ユーザー値 変更スクリプトのうち、(ノート引用符)に:?docker run -d -e EnvVar1="${connstring1}" ..."

0

Hereに入れます環境変数では、潜在的に手動でコマンドを自分で実行することなく、あなたの目的を達成することができますドッカータスクのリンクです。役立つかもしれません。