Я теперь DevOps Недавно Ansible освоил
А этой ночью научился деплоить проекты через докер, без использования гита и Docker-Registry
У меня для этого свой небольшой скрипт, одной командой собирает image из Dockerfile через buildx под amd64 архитектуру (тк у меня arm, а сервера нет)
Шаги такие:
• Сбор docker image из Dockerfile
• В нём идёт сборка и настройка проекта переменными окружения из файла deploy.env
• Дамп image в taball сжатый gzip
• Передача дампа по ssh при помощи scp (можно заменить на rsync, вероятно будет чуть шустрее, но это всего один файл, так что не критично)
• Удаленное исполнение скрипта по ssh на сервере
• Скрипт распаковывает tarball
• Загружает актуальный image в docker
• Останавливает, удаляет и запускает обратно image, но уже актуальный
• Удаляет полученный архив
• Затем локальный скрипт тоже удаляет за собой архив
Предусловие для всего этого будет только доступ к серверу по ssh ключу, в остальном всё в конфиге можно указать от юзера и хоста, до путей и названия image и контейнера
Выходит я теперь когда хочу задеплоить фронтенд на сервер, выполняю для dev среды (staging):
./deploy --dev
И он сразу собирает образ и деплоит проект
Либо для продакшна
./deploy
Который ещё попросит подтверждение, и написать
y в ответ, чтобы убедиться, что намерение совпадает с введенной командой, и не задеплоить в продакшн dev ветку.
У меня на этом проекте ещё Directus, являющийся CMS, а я из нелюблю очень.
Так что там в разработке утилита и для него.
Сейчас для синхронизации схемы базы данных локальной копии с удалённой используется directus-sync, но он дико медленный.
А кроме того он работает по http, и чуть ли ни каждый insert делает отдельным запросом...
Есть ещё миграции у самого directus, как и в моей утилите, но у directus нет толком по ним документации, как и по архитектуре, так что тоже голяк...
Надо придумать решение быстрое, удобное, и с точки зрения проектирования надёжное.
БЭКАПЫ НЕ ПРЕДЛАГАТЬ!!! — Прошлые разработчики такое решение сделали, а теперь бэкап сайта весит 60GB, и все файлы в перемешку благодаря архитектуре Directus. Так что равернул пустую копию сайта и с заказчиком будем делать демо наполнение, из которого уже будем разворачивать копии.
И да, автогенерации фейк контента тоже в cms нет, придется руками.
Если Faker для directus найдете, и что-то типа orm нормальной (не knex, что-то более тесно интегрированное в архитектуру) — я бонусом косарь закину 😚