Здається, це єдиний спосіб встановити ENV з динамічними значеннями в beanstalk. Я придумав рішення, яке працює для моєї установки на багато докерів:
1) Додайте це до свого Dockerfile перед тим, як створити + завантажити до свого сховища ECS:
CMD eval `cat /tmp/envs/env_file$`; <base image CMD goes here>;
2) У файлі Dockerrun.aws.json створіть том:
{
"name": "env-file",
"host": {
"sourcePath": "/var/app/current/envs"
}
}
3) Встановіть об’єм до контейнера
{
"sourceVolume": "env-file",
"containerPath": "/tmp/envs",
"readOnly": true
}
4) У свій .ebextensions / options.config файл додайте блок контейнер_команди таким чином:
container_commands:
01_create_mount:
command: "mkdir -p envs/"
02_create_env_file:
command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME=" , { "Ref", "RESOURCE" }, ';" > envs/env_file;' ] ] }
5) eb розгортання, і ваш ENVS має бути доступний у вашому докерному контейнері
Ви можете додати більше ENV, додавши більше контейнерів-команд, таких як:
02_create_env_file_2:
command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME_2=" , { "Ref", "RESOURCE2" }, ';" >> envs/env_file;' \] \] }
Сподіваюся, це допомагає!