【问题标题】:How to place a connection string in an env file如何将连接字符串放在 env 文件中
【发布时间】:2018-12-18 08:17:38
【问题描述】:

我有一个要 docker 化的 .net 核心应用程序。随之而来的是一个 env 文件,我试图在其中定义一个具有以下格式的连接字符串:

Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;allow user variables=true;SslMode=none;maxpoolsize=100;Convert Zero Datetime=true;

我在 env 文件中尝试了以下两个但没有成功:

connectionString="Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;allow user variables=true;SslMode=none;maxpoolsize=100;Convert Zero Datetime=true;"

connectionString='Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;allow user variables=true;SslMode=none;maxpoolsize=100;Convert Zero Datetime=true;'

【问题讨论】:

  • 我不得不将该连接字符串分成几部分,以便我可以将它们放在我的 env 文件中。它现在正在工作

标签: docker .net-core environment-variables


【解决方案1】:

你使用的是文件方法,但我建议使用命名的 env-files,这样你就可以区分,你可以按照这个例子:

使用您的 env var 定义创建 myenv-dev.list 文件,让我们为您的 dev 环境创建一个文件,然后为您的所有环境创建一个后续文件 - dev/test/uat/prod ,例如:

ASPNETCORE_ENVIRONMENT=dev
connectionString="Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;allow user variables=true;SslMode=none;maxpoolsize=100;Convert Zero Datetime=true;"
...

然后将它传递给 docker - 假设使用 printenv 来验证它:

docker run -it --env-file ./myenv-dev.list microsoft/aspnetcore printenv

然后结果看起来像你所有的区分大小写环境变量:

ASPNETCORE_ENVIRONMENT=dev connectionString="Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;允许用户变量=true;SslMode=none;maxpoolsize=100;转换零日期时间=true;"

...

如果您希望使用 compose 文件实现此功能,您也可以在 docker-compose.yml 文件中执行此操作,也可以根据环境执行此操作:

version: '3'
services:
  myservice:
    image: 'microsoft/aspnetcore'
    env_file:
     - ./myenv-dev.list

在以下位置查看更多示例:

另一方面,您可能希望稍后考虑使用像 AWS Parameter StoreSecrets Manager 这样的秘密管理系统将您的数据库密码和其他敏感信息存储在安全的地方,并使用 pstore 等动态获取这些信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多