【问题标题】:Why ConnectionString doesn't override when I send it in docker run command?为什么我在 docker run 命令中发送 ConnectionString 时不会覆盖它?
【发布时间】:2020-05-04 08:24:03
【问题描述】:

谁能帮忙解决下一个问题:

在我的应用程序(Asp Net Core 3.1)中,我有下一个连接字符串

我应该创建一些容器,它们具有不同的连接字符串但图像相同。

我写了下一个 docker run 命令(windows 服务器):

docker run --rm --name admin -it -d -p 8080:8080 qulix/admin -e "ConnectionString:MSSQL"="Server=<IP adress>;Database=BasketballDb;User Id=user;Password=123456;Trust_connection=false"

并且连接字符串没有改变。我不明白为什么,但我开始阅读环境变量,但我没有正确理解它应该如何帮助我。

更新

如果我更改位置,它会将其读取为图像名称并得到下一个错误

C:\Program Files\Docker\Docker\resources\bin\docker.exe:引用格式无效:存储库名称必须为小写。

【问题讨论】:

    标签: docker asp.net-core


    【解决方案1】:

    docker run 命令中的图像名称之后的任何内容都被视为入口点的参数。

    所以尝试重新排列 docker run 命令。

    docker run --rm -e "ConnectionString:MSSQL\"=\"Server=<IP adress>;Database=BasketballDb;User Id=user;Password=123456;Trust_connection=false" qulix/admin
    

    我也不确定你的代码部分,你可以看看这个

    asp.net core override connection strings via ENV variables

    app-secrets aspnetcore-3.1

    因为使用环境变量取决于代码库或框架。

    【讨论】:

    • 我更新了我的问题,我阅读了这些链接并将我的命令基于它,但我得到了一个错误。
    • 这似乎是因为环境变量中有多个引号,尝试使用转义字符,
    • 对不起,同样的repository name问题。
    • 命令:docker run -it -p 8888:80 dockerconfiguration -e "ConnectionStrings:DefaultConnection"="testsqlstring" 在来自 stackoverflow 的链接中,您的答案是:首先是存储库名称,第二个 -e 参数,因为 dockerconfiguration 是 repo - name .
    • 我不认为它的存储库名称有问题,只需尝试删除env,然后检查它是否会抛出相同的错误
    【解决方案2】:

    我的解决方案是(在 windows docker 服务器中)下一行:

    docker run --rm --name stat -it -d -p 8090:8080 -e ConnectionStrings:MSSQL="Server=<IP Adress>;Database=Basketball_stat;User Id=user;Password=123456;" admin
    

    在哪里

    ConnectionStrings:MSSQL 应该没有任何引号

    "Server=&lt;IP Adress&gt;;Database=Basketball_stat;User Id=user;Password=123456;" 带引号(双引号或单引号)

    admin 是存储库的名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多