2016-01-15 3 views
3

Я создаю приложение RoR на Heroku, которое должно запускаться внутри контейнера Docker. Для этого я использую official Dockerfile. Поскольку это очень распространено с Heroku, мне нужно несколько надстроек, чтобы сделать это приложение полностью работоспособным. В производстве переменная DATABASE_URL доступна в моем приложении. Но если я попробую другие надстройки, которые используют переменные среды (Mailtrap в моем случае), переменные не копируются в экземпляр во время выполнения.Передать переменные enokroment Heroku на экземпляр Docker

Так что мой вопрос прост: Как я могу сделать экземпляры докеров осведомленными об переменных окружения при исполнении на Heroku?

Как вы можете спросить, я уже знаю, что мы можем Указан среды директива прямо в docker-compose.yml. Я хотел бы избежать этого, чтобы иметь возможность поделиться этим файлом через репозиторий проекта.

ответ

0

я не нашел никаких документов об этом, но т кажется, что Heroku изменить совсем недавно, как она обрабатывает config vars в контейнерах Docker: они теперь реплицируются автоматически (значение от docker-compose.yml просто игнорируются).

1

Обходной путь, чтобы не совершать важные файлы конфигурации, заключался бы в создании docker-compose.yml **. Example ** с пустыми полями и фиксации, а затем добавить docker-compose.yml в .gitignore.

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

Как это: docker run --env "MY_VAR=yolo" my_image:my_tag

Вы также мог бы служить частный Докер-config.yml с защищенным сайта, что Heroku будет иметь доступ к (который был бы мое предпочтительным решением в вашем случае).

+1

Мы используем личное ведро S3 для конфигураций, чтобы сделать то, что вы ссылаетесь в своем последнем предложении. Yolo. – Anthony

+0

Мне нравится ваша идея создать пример файла для docker-compose.yml, это довольно просто. Тем не менее, моя озабоченность связана скорее с подражанием классическому процессу Heroku при добавлении надстройки (т. Е. Автоматически добавлять переменные в запущенный контейнер на Heroku). – Pirhoo

Смежные вопросы