Best practice по разработке и деплою в продакшен docker образов?
Какие есть best practice по разработке и деплою в продакшен docker образов?
Я планирую сделать так, но не уверен что это лучший путь:
1. Образ docker-compose:
1.1. Postgres с высунутой наружу базой // чтобы делать бэкапы
1.2. Rails с высунутыми наружу:
1.2.1. log //чтобы быть в курсе происходящего
1.2.2. public // чтобы делать бэкапы
1.2.3. tmp // чтобы быть в курсе происходящего
2. Деплой образа с development на production с использованием терминала development машины
Как я планирую это будет работать:
1. development сервер:
1.1. виден корень проекта
1.2. установлен github репозитарий
1.3. После завершения разработки изменения комитятся в github
2. cloud.docker:
2.1. забирает изменения с github
2.1. выполняет build образа с Rails
2.2. после успешного завершения build сообщает о готовности образа production серверу
3. production сервер:
3.1. Забирает образ Rails с cloud.docker
3.2. Обновляет текущий образ до нового состояния
По пунктам 2.2. и всему разделу 3 пока у меня много вопросов, что наталкивает на мысли что можно все сделать проще и наверно уже есть какие то готовые инструменты?
Почитал про docker-machine но не понял зачем делать еще одну виртуальную систему поверх и так уже виртуального сервера на котором крутится production и чето оставил эту идею на самый крайний случай.
Есть ли у кого-то в сообществе успешный опыт работы?
Устанавливаете gitlab последней версии и будет Вам счастье . В gitlab есть autodeploy , работает с docker контейнерами , и куча других плюшек .
P.S. gitlab есть уже собранный под докер .
Вы абсолютно правы! Поэтому меня и не покидает чувство, что вероятно есть другое решение! Не знаю только какое (((.
Пока ждал ответа, накатил в digitalOcean docker-machine, оказалось что прослойки в виде чего-то типа VirtualBox поверх виртуалки ставить не нужно, docker-machine это и есть виртуалка с docker в которую можно выкатывать контейнеры с полезным кодом.
Gitlab + Gitlab CI являются полноценным CI решением. После коммита и пуша в него может все построить и собрать докер образы и доставить до продакшн сервера. На сервере поставить к примеру kubernetes и разворачивать в него. Там есть много всего полезно. Локально разработка и отладка может вестись через minikube. Kubernetes позволит масштабировать сервисы. (а руби сервисы придется масшбировать 100%)