Назад | Перейти на главную страницу

Создание контейнера докеров из развертывания capistrano

Мне непросто понять, как я могу использовать существующий код инфраструктуры с помощью Docker.

У меня есть приложение Ruby on Rails, которое использует capistrano для развертывания развертываний. Я хочу использовать этот сценарий capistrano для создания нового образа докера. Могу ли я выполнить развертывание, а затем использовать развернутый в каталог для развертывания поверх существующего образа, скажем, точно (поскольку он соответствует моей целевой ОС).

Это будет правильный подход или я что-то упускаю?

@Восемьдесят восемь

Мы используем Docker и Jenkins для развертывания. Мы всегда держим наш код вне докера до тех пор, пока не захотим его выпустить и запустить.

У вас должен быть образ Docker, доступный на всех серверах / экземплярах, на которых вы хотите развернуть приложение.

Вы должны выполнить полное развертывание в два этапа.

1) Выполните задание в Capistrano для создания пакета (tar или gz) для тега / ветви вашего приложения, которое вы хотите развернуть.

2) Сделайте еще одну работу по фактическому развертыванию, выполнив следующие шаги:

i) Отправьте пакет на все серверы, на которых вы хотите развернуть приложение, и распакуйте пакет.

ii) Остановите, если какой-либо контейнер уже запущен для того же приложения, и запустите контейнер с соответствующим контейнером и смонтированным на нем кодом.

Например, docker run -d -p 8000: 8000 -v / path / to / the / tag: / deployment / path / inside / docker --name (NameOfContainer) --env TERM = xterm accountid / imagename: version

Обычно в Docker предпочтительным способом развертывания приложения в контейнере является dockerfile, который может заменить роль сценария capistrano, в основном выполняющего команды в контейнере (установка пакетов, выполнение клонирования git, запуск служб и приложений и т. д.).

Вы определяете файл dockerfile с контейнером базового образа и списком команд для выполнения, а затем создаете свой контейнер:

docker build {{your_repository_containing_dockerfile}}

Таким образом, вы можете перевести свой сценарий capistrano в файл докеров и заменить Capistrano deploy на Docker deploy.