我有一个要被 jetty 化的.net核心应用程序。伴随着它是一个环境文件,我试图用以下格式定义一个连接字符串:
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;"connectionString='Server=localhost;Port=3306;Database=myDb;Uid=root;Pwd=root;allow user variables=true;SslMode=none;maxpoolsize=100;Convert Zero Datetime=true;'

最佳答案

您正在使用文件方法,但是我建议使用命名的env文件,这样您就可以区分,可以按照以下示例进行操作:

  • https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file

  • 使用您的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
    

    然后结果看起来就像所有对大小写敏感的环境变量一样:



    如果希望使用撰写文件来实现此目的,则可以在docker-compose.yml文件中以及每个环境中执行此操作:
    version: '3'
    services:
      myservice:
        image: 'microsoft/aspnetcore'
        env_file:
         - ./myenv-dev.list
    

    请参阅更多示例:
  • https://docs.docker.com/compose/environment-variables/#the-env_file-configuration-option

  • 另一方面,您可能要考虑稍后使用像AWS Parameter StoreSecrets Manager这样的 secret 管理系统,将您的数据库密码和其他敏感信息存储在安全的地方,并使用pstore之类的动态获取密码:
  • https://github.com/glassechidna/pstore
  • 07-24 09:47
    查看更多