docker 容器内未创建环境变量
Environment variables are not getting created inside docker container
我在 Windows 10 Pro 系统上使用 Docker for Windows (2.2.0.5)。
我已经为我的 dotnet 核心应用程序 (SDK 3.1) 创建并构建了 docker 图像。
此应用正在连接外部 MySQL 服务器以获取数据。
docker 容器内的应用程序能够使用硬编码连接字符串连接数据库。但无法连接使用 -e 标志传递的参数。经过调查,我发现环境变量没有在 docker 容器内创建。
下面是我的 docker 运行 命令 -
docker run -d -p 5003:80 --name price-cat pricingcatalog:latest -e DB_HOST=165.202.xx.xx -e DB_DATABASE=pricing_catalog -e DB_USER=my-username -e DB_PASS=my-password
我正在使用 C# 代码打印通过容器创建的所有环境变量 -
Console.WriteLine("All environment variables....Process");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
Console.WriteLine("All environment variables....User");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
Console.WriteLine("All environment variables....Machine");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
以下是我得到的 -
我在这里遗漏了什么吗?
请记住,所有 docker cli 参数必须位于图像名称之前。图像名称之后的任何内容都作为命令传递到图像中。如果您期望那些 -e ... 设置环境变量的参数,它们需要位于图像名称之前:
docker run -d -p 5003:80 --name price-cat \
-e DB_HOST=165.202.xx.xx \
-e DB_DATABASE=pricing_catalog \
-e DB_USER=my-username \
-e DB_PASS=my-password \
pricingcatalog:latest
我在 Windows 10 Pro 系统上使用 Docker for Windows (2.2.0.5)。 我已经为我的 dotnet 核心应用程序 (SDK 3.1) 创建并构建了 docker 图像。 此应用正在连接外部 MySQL 服务器以获取数据。 docker 容器内的应用程序能够使用硬编码连接字符串连接数据库。但无法连接使用 -e 标志传递的参数。经过调查,我发现环境变量没有在 docker 容器内创建。
下面是我的 docker 运行 命令 -
docker run -d -p 5003:80 --name price-cat pricingcatalog:latest -e DB_HOST=165.202.xx.xx -e DB_DATABASE=pricing_catalog -e DB_USER=my-username -e DB_PASS=my-password
我正在使用 C# 代码打印通过容器创建的所有环境变量 -
Console.WriteLine("All environment variables....Process");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
Console.WriteLine("All environment variables....User");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
Console.WriteLine("All environment variables....Machine");
foreach(DictionaryEntry envVar in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine)){
Console.WriteLine("key={0}, value={1}", envVar.Key, envVar.Value);
}
Console.WriteLine("============================");
以下是我得到的 -
请记住,所有 docker cli 参数必须位于图像名称之前。图像名称之后的任何内容都作为命令传递到图像中。如果您期望那些 -e ... 设置环境变量的参数,它们需要位于图像名称之前:
docker run -d -p 5003:80 --name price-cat \
-e DB_HOST=165.202.xx.xx \
-e DB_DATABASE=pricing_catalog \
-e DB_USER=my-username \
-e DB_PASS=my-password \
pricingcatalog:latest