Ich habe eine ASP.NET-Site, die in einem Windows-Dockercontainer ausgeführt wird. Ich möchte in der Dockerfile definierte Umgebungsvariablen lesen können. (Und wenn starrt aus dem Behälter.)Docker für Windows: ASP.NET-Site kann Umgebungsvariablen nicht lesen, die in Dockerfile definiert sind
Ich bin nicht in der Lage, damit es funktioniert:
Repro:
Installieren und Konfigurieren von Software benötigte Fenster Container zu verwenden.
Erstellen Sie einen neuen (leeren) Ordner.
Erstellen Sie zwei Dateien (Dockerfile und default.aspx) im neuen Ordner mit dem unten beschriebenen Inhalt.
Navigieren Sie zu dem leeren Ordner und führen
docker build -t test .
(Dies wird einen Behälter Bild mit dem Namen Teststartet Powershell in einem interaktiven Container erstellen:
docker run -it --rm -e FROM_COMMAND_LINE="From command line" --entrypoint powershell test
Sie jetzt in einem sein Powershell-Eingabeaufforderung innerhalb des Containers Sie können jetzt überprüfen, dass die Umgebungsvariablen auf der Website nicht verfügbar sind, indem Sie die Webseite abrufen:
$(wget http://localhost/default.aspx -UseBasicParsing).Content
Auszug aus dem Ergebnis:
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>
...
Beachten Sie, dass FROM_COMMAND_LINE und FROM_DOCKERFILE fehlen.
In der Powershell-Konsole können Sie überprüfen, ob die Variablen fehlen nicht:
PS C:\> $env:FROM_COMMAND_LINE
From command line
PS C:\> $env:FROM_DOCKERFILE
Value from dockerfile
Ich habe auch ein iisreset tun getestet, aber es funktioniert nicht, das Verhalten ändern.
Habe ich etwas falsch gemacht?
Gibt es andere Möglichkeiten, Umgebungsvariablen anzugeben, die sie innerhalb von dem Container verfügbar machen würden?
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));
}
%>
Anmerkung: Ich bin derzeit mit Docker Version 1.12.2-rc1-beta27.1 (Build: 7538) a0eb77a
Sie 'ENV' Richtlinie sieht nicht korrekt aus: https://docs.docker.com/engine/reference/builder/#/env – bjhaid
Wenn Sie genau hinsehen, verwende ich die erste Variante der Syntax: 'ENV' und ist FROM_DOCKERFILE und ist Wert von dockerfile: 'ENV FROM_DOCKERFILE Wert von dockerfile' (auch, wie Sie oben im Text zu sehen, alles in der Powershell-Konsole korrekt ist, aber nicht in den web- Anwendung) –
Ich habe ein Problem auf github hinzugefügt: [https://github.com/Microsoft/aspnet-docker/issues/7](https://github.com/Microsoft/aspnet-docker/issues/7) –