Супервизор в Docker AWS Elastic Beanstalk не может принимать не буквенно-цифровые переменные среды

#amazon-web-services #docker #environment-variables #amazon-elastic-beanstalk #supervisord

#amazon-веб-сервисы #docker #переменные среды #amazon-elastic-beanstalk #супервизор

Вопрос:

Я использую пользовательский контейнер Docker в AWS Elastic beanstalk для развертывания wep-приложения. Я мог бы установить переменные среды, такие как ключ API, секрет API и т.д., на веб-консоли AWS.(Elastic beanstalk => Конфигурация => Конфигурация программного обеспечения) Это сработало нормально.

Однако после того, как я изменил некоторые переменные на другие значения, содержащие специальные символы, с этой ошибкой это не сработало:

 Docker container quit unexpectedly on Mon Oct 24 13:32:22 UTC 2016:
Error: Unexpected end of key/value pairs
For help, use /usr/bin/supervisord -h
  

В документе супервизора говорится Values containing non-alphanumeric characters should be quoted .

Мой вопрос,

Существуют ли какие-либо способы заставить переменные среды со специальными символами, которые задаются в AWS elastic beanstalk, правильно обращаться к контейнеру docker, заключая их в кавычки?

Я попытался процитировать их на веб-консоли:

Переменные среды с двойными кавычками на веб-консоли

Но это не сработало:

Избежал двойных кавычек

Я полагаю, что AWS Elastic beanstalk по умолчанию не заключает двойные кавычки.

Для получения дополнительной информации. мой конфигурационный файл ebextension:

 option_settings:
  "aws:elasticbeanstalk:application:environment":
    MY_VARIABLE: ""
    MY_VARIABLE_QUOTED: ""
  

Конфигурационный файл супервизора:

 [program:run_app]
environment=MY_VARIABLE=%(ENV_MY_VARIABLE)s,MY_VARIABLE_QUOTED=%(ENV_MY_VARIABLE_QUOTED)s
command=gunicorn my_app.wsgi:application -w 2 -b 0.0.0.0:8000 -t 300 --max-requests=100
directory=/var/www/my_app
user=root
stdout_logfile=/var/www/my_app/logs/django_stdout.log
stderr_logfile=/var/www/my_app/logs/django_stderr.log
autorestart=true
redirect_stderr=true
stopwaitsecs = 600
  

Комментарии:

1. Я только что нашел несколько обходных способов решения этих проблем.

2. Сначала я создал файл сценария оболочки run_sv.sh . Содержимое файла: #!/bin/sh MY_VARIABLE="${MY_VARIABLE}" MY_VARIABLE_QUOTED="${MY_VARIABLE_QUOTED}" supervisord -n -c /var/www/my_app/config/supervisor/test.conf . Он запускает команду supervisor с предваряющими переменными, заключенными в двойные кавычки. Затем в Dockerfile я добавил эту строку в конце: CMD ["sh", "/var/www/my_app/conf/supervisor/run_sv.sh"]