2017-11-28 3 views
0

私はこれの底に到達するためにかなりの時間を費やしました。私が達成しようとしているのは、docker-composeからビルド引数として接続文字列をdockerfileに渡すことです。以下は、問題を再現する非常に単純なスニペットです。 Write-Host ${SOMEARG}の出力は常にnullです。以下dockerfile持つドッカーファイルARGは常にnull

Step 1/4 : FROM microsoft/iis 
---> 85fb57957cf1 
Step 2/4 : ARG SOMEARG=test 
---> Running in 84a7fc37994c 
Removing intermediate container 84a7fc37994c 
---> 2099e56f466f 
Step 3/4 : SHELL ["powershell", "-command"] 
---> Running in 61852677a26a 
Removing intermediate container 61852677a26a 
---> b934f778c13b 
Step 4/4 : RUN Write-Host 'HERE:'; Write-Host ${SOMEARG} 
---> Running in 3fde911ecdc1 
HERE: 

Removing intermediate container 3fde911ecdc1 
---> 5331ce22c3ec 
Successfully built 5331ce22c3ec 
+0

'ARG'行の後に置かれた' ENV SOMEARG = $ {SOMEARG} 'は物事を改善しますか? – BMitch

+0

@BMitchは残念ながらしません。私は実際にそのコンセプトを理解するかどうかは不明です。 – Dimt

+0

'RUN echo $ {SOMEARG}' – yamenk

答えて

0

実はこれはhereを解決している。

FROM microsoft/iis 
ARG SOMEARG=test 

SHELL ["powershell", "-command"] 

RUN Write-Host 'HERE:';` 
    Write-Host ${SOMEARG} 

を私は出力を持っています。

Windowsコンテナを使用しているので、cmdはデフォルトのシェルなので、%%を使用してビルドargsを参照する必要があります。

FROM microsoft/iis 
ARG SOMEARG=test 

SHELL ["powershell", "-command"] 

RUN Write-Host 'HERE:';` 
    Write-Host %SOMEARG% 
+0

これも動作しません。%SOMEARG% – Dimt

+0

#SHELL ["powershell"、 "-command"]を削除すると動作します。しかし、私は多くのpowershellコマンドとコマンドレットを実行する必要があるので、これは私の問題を解決するものではありません。 – Dimt

+0

このコマンドが動作していることを確認しましたRUN powershell - コマンド書き込みホスト%SOMEARG% – Dimt