私は、ASP.NETサイトをWindowsドッカーコンテナで実行しています。 Dockerfileで定義されている環境変数を読み取れるようにしたい。私はそれを動作させることができません(とコンテナを見つめて。)Docker for Windows:ASP.NETサイトがDockerfileに定義されている環境変数を読み取ることができません。
:
リプロ:
ウィンドウコンテナを使用するために必要なソフトウェアをインストールして設定します。
新しい(空の)フォルダを作成します。
新しいフォルダに2つのファイル(Dockerfileとdefault.aspx)を作成します。内容は次のとおりです。空のフォルダへ
移動し、
docker build -t test .
を実行します(これは、対話型のコンテナ内の名前テストスタートPowerShellを使用した容器のイメージを作成します。
docker run -it --rm -e FROM_COMMAND_LINE="From command line" --entrypoint powershell test
あなたが今になりますコンテナの中にpowershellプロンプトが表示されるようになりました。ウェブページを取得することで、ウェブサイトで環境変数が利用できないことを確認できます。
$(wget http://localhost/default.aspx -UseBasicParsing).Content
結果の抽出:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables
COMPUTERNAME - 540CA54CDB93<br>
PUBLIC - C:\Users\Public<br>
LOCALAPPDATA - C:\Windows\system32\config\systemprofile\AppData\Local<br>
...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - Process
COMPUTERNAME - 540CA54CDB93<br>
PUBLIC - C:\Users\Public<br>
LOCALAPPDATA - C:\Windows\system32\config\systemprofile\AppData\Local<br>
...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - User
Path - C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;<br>
TEMP - C:\Windows\system32\config\systemprofile\AppData\Local\Temp<br>
TMP - C:\Windows\system32\config\systemprofile\AppData\Local\Temp<br>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - Machine
PROCESSOR_REVISION - 3f02<br>
...
注FROM_COMMAND_LINEとFROM_DOCKERFILEが欠落していること。
PS C:\> $env:FROM_COMMAND_LINE
From command line
PS C:\> $env:FROM_DOCKERFILE
Value from dockerfile
を私もIISRESETを行うためにテストしているが、それは動作を変更しません:あなたは変数が欠落していないことを確認することができますPowerShellコンソールで
。
私は間違ったことをしましたか?
内部でiisが利用できるようにするための環境変数を に指定する他の方法はありますか?
Dockerfile:
FROM microsoft/aspnet
ENV FROM_DOCKERFILE Value from dockerfile
ADD default.aspx c:/inetpub/wwwroot/default.aspx
のdefault.aspx:
<% @ Page Language="C#" Trace="false"%>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables
<%
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables()) {
Response.Write(string.Format("{0} - {1}<br>\n", de.Key, de.Value));
}
%>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - Process
<%
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)) {
Response.Write(string.Format("{0} - {1}<br>\n", de.Key, de.Value));
}
%>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - User
<%
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User)) {
Response.Write(string.Format("{0} - {1}<br>\n", de.Key, de.Value));
}
%>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GetEnvironmentVariables - Machine
<%
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine)) {
Response.Write(string.Format("{0} - {1}<br>\n", de.Key, de.Value));
}
%>
注:私は現在、ドッカーバージョン1.12.2-RC1-beta27を使用しています。1(ビルド:7538)を-e
介しdocker
に渡さa0eb77a
あなたは 'ENV'指示文が正しく見えません。https://docs.docker.com/engine/reference/builder/#/env – bjhaid
よく見ると、私は構文の最初のバリエーションを使用しています: 'ENV'とはFROM_DOCKERFILEあると dockerfileからの値である:あなたが上記のテキストで見るようdockerfile' から 'ENV FROM_DOCKERFILE値(また、すべてのものは、PowerShellコンソールではなく、WEB-に正しいですアプリケーション) –
githubに問題を追加しました: [https://github.com/Microsoft/aspnet-docker/issues/7](https://github.com/Microsoft/aspnet-docker/issues/7) –