Это часть которая называется CI.
Что касается CD - зависит от того что бежит на сервере. Если K8S - есть варианты, включая GitOps c ArgoCD и т.п.
Если AWS ECS - деплой через AWS.
Если "просто VPS с докер" - через ssh запускаем команду на обновление image, рестарт и т.п.
В git hub actions будет история деплоев.
Так в чём плохи или хороши Snap и Systemd? Стоит ли их использовать или надо избавляться от них?
ИМХО, это филосовский (точнее теоретический) вопрос.
Практический вопрос - какой дистрибутив использовать? ИМХО - один из популярных, тогда работать намного проще, да и продать свои услуги легче.
Я давно не слежу за рейтингами и таблицами, но из того что вижу (из Израиля), популярны Ubuntu и клоны RHEL. Во всех них Systemd. Что касается Snap - использовать его не заставляют.
Но появился новый вопрос. Что делать в таком случае если рядом не окажется загрузочной флешки ?
Два варианта, лучше вместе:
- иметь image диска (dd для продвинутых, Veem и т.п. для простых людей)
- изучать линукс, в частности процесс загрузки и Grub
Все просто - почитайте любое объяснение "что такое MX record". Если коротко, то эти сервера обычно пересылают почту на тот сервер, на котором наши Inboxes, т.е. где письма хранятся.
Так как проект вырос, хостинг обрывает git pull из-за большого размера репозитория
Я бы разбирался с этой проблемой, в целом метод выглядит правильным.
Есть ли какие-то сообщения?
Какой размер репо?
Хороший ли интернет у сервера?
(я практически не работал с gitlab, но в github вполне работал с repo по несколько GB)
Из относительно простых способов - APM (NewRelic APM или другой).
ИМХО, в большинстве случаев позволяет понять в чем проблема не залезая слишком глубоко.
Попробуйте использовать "--no-interaction" или "--force" в команде - проверьте по help что есть.
Почему не работает - возможно stdin попадает в docker-compose и не передается php? Надо почитать/проверить.
Советую взять любой проект - реальный на вашей работе, или какой-нибудь open source из github, и настроить базовый CI в Gitlab. Потом добавить какой-нибудь security scanner, static code analyze. Потом подумать как можно улучшить деплой.
Второй вариант - попробовать использовать Gitlab-CI для автоматизации админских задач - например, человек приходит (уходит) в\из фирму - посылаем извещение в Slack, посылаем ему док-ты, и т.п.