无法在docker容器内创建环境变量

时间:2020-04-29 01:42:37

标签: docker .net-core docker-for-windows dotnet-core-pack

我在Windows 10 Pro系统上使用Docker for Windows(2.2.0.5)。 我已经为我的dotnet核心应用(SDK 3.1)创建并构建了docker映像。 该应用正在与外部MySQL服务器连接以获取数据。 泊坞窗容器中的应用程序能够使用硬编码的连接字符串与数据库连接。但无法连接使用-e标志传递的参数。经过调查,我发现没有在docker容器内创建环境变量。

下面是我的docker run命令-

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("============================");

以下是我得到的- Environment variables issue Docker version 有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

请记住,所有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