Я теперь 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, что-то более тесно интегрированное в архитектуру) — я бонусом косарь закину 😚``