Репозиторий all-in-one (AIO) - предназначен для запуска на персональных серверах повседневных сервисов в Docker-контейнерах с использованием Ansible.
На данный момент он позволяет выполнить базовую настройку сервисов и запустить их деплой.
Уделено внимание структуре проекта и документации, чтобы при необходимости можно было быстро внести изменения или, при необходимости, переехать на другой сервер.
Так как проект предполагает изначально личное использование, то о горизонтальном масштабировании речи не идёт, но при желании - можно.
Текущий сайт обычная статика, но собирается в docker образ на базе nginx:alpine.
Настроен workflow: при пуше в main ветку репозитория создаётся образ в ghcr с двумя тегами - первый latest и второй с коротким SHA коммита, а также вызывается вебхук для выполнения CD на сервере (по факту сейчас он просто тянет новый образ и выполняет повторный запуск сервиса).
Отдельный репозиторий для деплоя с ansible и Dockerfile для webhook.
Для CD не используется watchtower, cron и другие решения из-за того, что хотелось чтобы обновление образа было практически сразу после создания новой версии образа и не хотелось использовать сокет докера.
По этой причине выбран webhook и выполнение скрипта через SSH на хосте. SSH настроен так, что позволяет выполнить один единсвеный скрипт, который находится в проекте.