Как поместить строку подключения в файл env - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть приложение ядра .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;'

1 Ответ

0 голосов
/ 18 декабря 2018
Вы использовали

файловый подход, но я рекомендую использовать именованные env-файлы, чтобы вы могли различать, вы можете следовать этому примеру:

Создайте файл myenv-dev.list с определением env var, скажем, для вашей среды 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;"
...

А затем передайте это докеру - скажем, с помощью printenv, чтобы проверить это:

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

И тогда в результате выглядело бы что-то, похожее на все ваши с учетом регистра переменные среды:

ASPNETCORE_ENVIRONMENT = dev connectionString = "Сервер = localhost; Порт = 3306; База данных = myDb; Uid = root; Pwd = root; разрешить пользовательские переменные = true;SslMode = none; maxpoolsize = 100; Convert Zero Datetime = true; "

...

Если вы хотите реализовать это с помощью составного файла, вы можете сделать это в своемФайл docker-compose.yml также для каждой среды:

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

См. Дополнительные примеры по адресу:

С другой стороны, вы можете рассмотреть возможность использования системы секретного управления, например AWS Parameter Store или Secrets Manager, для хранения паролей базы данных и другой конфиденциальной информации в надежном месте и получениядинамически с чем-то вроде pstore:

...