Ответ 1
Более точная документация по герою того, что вы хотите сделать, находится здесь: https://devcenter.heroku.com/articles/container-registry-and-runtime
Выше приведено описание настройки плагина контейнера heroku и входа в реестр. Вы даже можете перенести изображение в Dockerfile со следующей строкой в вашем Dockerfile:
FROM "<insert Dockerfile tag here>"
Чтобы легко настроить это, вы назовете свои файлы Docker различными суффиксами, такими как Dockerfile.mongo, Dockerfile.node, Dockerfile.flask и Dockerfile.javamvc. Суффикс сообщает heroku имя dyno, используемое для вашего веб-приложения. Когда вам нужно отправить все ваши контейнеры, вы можете сделать это с помощью следующей команды, которая будет рекурсивно создавать все файлы Docker, если все они имеют уникальные суффиксы:
heroku container:push --recursive
Поскольку Heroku не читает файлы, создаваемые в Docker, любые переменные среды/настройка порта/и т.д. Необходимо будет перенести в Dockerfile. Кроме того, поскольку я не могу найти способ монтирования постоянного хранилища/тома с контейнерами в Heroku, я бы порекомендовал использовать дополнение Heroku для вашей базы данных mongo.
На Heroku вы увидите, что ваше приложение работает как один dyno для каждого Dockerfile, причем каждое имя dyno является суффиксом каждого Dockerfile.
ОБНОВИТЬ:
- Трэвис поднимает хороший вопрос. Убедитесь, что в вашем Dockerfile есть инструкция CMD, иначе heroku выдаст ошибку.
- Вчерашний вчера также добавил шаг к процессу, вам нужно будет запустить
heroku container:release <your dyno name>
для каждого dyno, который вы хотите обновить.