Создание Docker-контейнера из развертывания Capistrano
Мне трудно понять, как я могу использовать свой существующий инфраструктурный код с Docker.
У меня есть приложение Ruby on Rails, которое использует capistrano для развертывания. Я хочу использовать этот скрипт capistrano для создания нового образа докера. Могу ли я выдвинуть развертывание, а затем использовать каталог развернутого в каталоге для развертывания поверх существующего образа, скажем, точного (поскольку это соответствует моей целевой ОС).
Это был бы правильный подход, или я что-то упустил?
2 ответа
@Восемьдесят восемь
Мы используем Docker и Jenkins для развертывания. Мы всегда держим наш код вне докера до того момента, когда мы хотим выпустить и запустить его.
У вас должен быть Docker Image, доступный на всех серверах / экземплярах, на которых вы хотите развернуть приложение.
Вы должны выполнить полное развертывание в два этапа.
1) Иметь работу в Capistrano для сборки пакета (tar или gz) для тега / ветви вашего приложения, которое вы хотите развернуть.
2) Иметь другую работу, чтобы выполнить фактическое развертывание в следующие шаги:
i) Передать пакет на все серверы, на которых вы хотите развернуть приложение, и распаковать пакет.
ii) Остановитесь, если какой-либо контейнер уже запущен для того же приложения, и запустите контейнер с соответствующим контейнером и установленным на нем кодом.
Например, для docker запустите -d -p 8000:8000 -v /path/to/the/tag:/deploy /path/inside/docker --name (NameOfContainer) --env TERM=xterm accountid/imagename:version
Обычно в Docker предпочтительным способом развертывания приложения в контейнере является dockerfile, который может заменить роль сценария capistrano, в основном запускающего команды на контейнере (установка пакетов, выполнение git clone, запуск служб и приложений и т. Д.),
Вы определяете dockerfile с контейнером базового образа и списком команд для выполнения, а затем создаете свой контейнер с помощью:
docker build {{your_repository_containing_dockerfile}}
Таким образом, вы можете перевести свой сценарий capistrano в файл dockerfile и заменить развертывание Capistrano развертыванием Docker.