Вы использовали
файловый подход, но я рекомендую использовать именованные 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: