torrie
@torrie
Всё знаю, всё умею

Как организовать структуру и деплой проекта с docker?

Итак, сделал докерфайл, кинул в него django проект, запустил, отладил и имею сервак с доступом по ssh. Как мне запулить мой проект на этот серв? Как затем производить правки в коде?

Проекту нужна БД(куда без нее). По правилам хорошего тона в docker под бд нужен еще один контейнер. Как реализовать их связь или как сделать лучше?

Спасибо
  • Вопрос задан
  • 13042 просмотра
Решения вопроса 1
KolyaniuS
@KolyaniuS
безнадежный оптимист
Как мне запулить мой проект на этот серв?

Есть два варианта:
1. через hub.docker.com
а) делаете docker login для регистрации на docker-хабе (можно зайти и сделать свой проект приватным чтобы остальным не повадно было)
б) собираете ваш dockerfile с помощью docker build
в) затем docker push для отправки слоев на ваш хаб
г) затем логинитесь на боевом сервере и делаете docker pull для скачивания слоев
д) docker run
2. Просто кидаете с помощью scp ваш Dockerfile и файлы проекта на боевой сервер и делаете
docker build
Подробнее о командах можно почитать в документации - я лишь описал концепцию
Как затем производить правки в коде?

Все просто - залейте ваш проект в любой репозиторий (github, bitbacker, gitlab ...), после внесения изменений просто логинитесь на сервере, заходите в ваш докер-контейнер и запускаете git pull в нужную директорию, затем сборка или т.п. (для автоматизации процесса можно использовать любой CI).
Проекту нужна БД(куда без нее).

Очень просто - добавляете новый контейнер (например docker pull mysql), на хабе можно посмотреть информацию о запуске такого контейнера https://hub.docker.com/_/mysql/ и коннектитесь к базе из вашего приложения по внутренней сети вашей docer-системы (docker bridge).
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
k3NGuru
@k3NGuru
Сис.админ.КО., подающий надежды кодер :)
Вот не плохая статья https://habrahabr.ru/post/272811/ которая ответит на многие Ваши вопросы
Ответ написан
Комментировать
@Visphord
Я сделал чуть по проще (с меньшим кол-вом ручных действий).
Имеем:
- c#
- Stateless-приложения
- сервер с монгодб (ее не дают увести в докер).
- TeamCity.

Что сделал:
- Собрал билд-агента под mono в докер-контейнере, прокинул туда хостовый докер.
- Собрал базовый рантайм-контейнер с mono.
- Настроил билд через билд агента из п.1, при этом сам тимсити генерит Dockerfile (для c# они типовые).
- Поднял приватный докер registry.
- после этого тимсити делает docker tag, docker push в приватный репозитарий.
- на машинках кластера стоит watchtower, который обновляет и перезапускает контейнеры при появлении апдейта (но первый запуск нового сервиса делаю ручками).
- в самих проектах в гите храню compose файлы со ссылками на другие сервисы\контейнеры\env (с ними пока нет большого понимания - как и куда их правильно деплоить, где хранить - пока валяются в /home/ на каждой машинке в кластере).
Ответ написан
@Qilight
Как мне запулить мой проект на этот серв?

Не запулить, а подключить папку с хоста где лежит код.

Как затем производить правки в коде?

В редакторе.

Как реализовать их связь или как сделать лучше?

Используйте docker-compose.
Ответ написан
yucom
@yucom
Ruby on Rails Developer
Здесь я выложил пример деплоя с помощью ansible для docker и rails в capistrano стиле, но можно под себя подправить плейбуки https://github.com/weazar/andora
Ответ написан
Комментировать
sokolnikov
@sokolnikov
Я у себя сделал два разных докер файла - один под продакшн, один под девелопмент. Их разница в том, что в продакшн версии помимо настройки окружения выполняется еще и скачивание (git clone) и разворачивание самого приложения. А в девелопмент версии делается монтирование внешней директории с кодом, чтобы жизнь кода не зависила от жизни контейнера.

Бд лучше организовать в отдельный контейнер, с линковкой к контейнеру с приложением (про линковку очень доступно описано в документации).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы