Gitlab - удобный инструмент для управления кодом, задачами и процессами CI/CD. Его можно быстро развернуть в Docker и это достаточно хороший и долговременный способ. С нагрузкой ниже 15и пользователей он вполне быстр и не требует дополнительных манипуляций. При росте команды свыше 15и человек, желательно вынести базу PostgreSQL на отдельный сервер без docker - это придаст ему производительности и надежности вплоть до границы 45-50 пользователей.
Минимально Gitlab для стабильной работы требуется:
Если у вас активная разработка, которая написала много кода и постоянно его дописывает, смело выделяйте в 2 раза больше:
Gitlab хранит свои данные на диске (конфигурации, данные git, базу postgresql, логи). Нужно выделить ему место под их хранение:
mkdir -p /srv/gitlab/config mkdir -p /srv/gitlab/data mkdir -p /var/log/gitlab
При запуске gitlab в docker практически все настройки можно передать ему прям в команде запуска:
docker run --hostname git.example.com \ --publish 80:80 \ --publish 22:22 \ --name gitlab \ --rm \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://git.example.com'; gitlab_rails['lfs_enabled'] = true; " \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /var/log/gitlab:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:13.12.12-ce.0
Для демонстрационно запуска этого достаточно. Но конечно использовать "просто запуск докера руками" в корпоративном сервисе не следует. Давайте настроим наш сервер под Gitlab полноценно.
Поскольку порт 22 будет занят нашим Gitlab под нужны ssh+git - нам нужно переместить ssh самого хоста с порта по умолчанию 22 на другой порт, например 2022. Для этого откроем файл /etc/ssh/sshd_config и сменим порт:
... #Port 22 Port 2022 ...
после чего перезапустим ssh:
systemctl restart sshd
Для корпоративого сервиса, как и для любого другого важен порядок и единая точка входа во все Ваши сервисы. В современных системах этой точкой входа является systemd и его утилита управления systemctl. Вы можете запустить команду systemctl status без параметров и увидеть все Ваши сервисы в системе:
Systemd отвечает за запуск, остановку и поддержание состояния сервисов. Было бы хорошо и gitlab запускать через него. В общем это делатеся путем создания одного файла. Создаем файл /lib/systemd/system/gitlab.service и сохраняем в него содержимое с командой запуска и командой остановки gitlab:
[Unit] Description=Gitlab After=network.target docker.service [Service] ExecStart=/usr/bin/docker run --hostname git.example.com --publish 80:80 --publish 22:22 --name gitlab --rm --env GITLAB_OMNIBUS_CONFIG="external_url 'http://git.example.com'; gitlab_rails['lfs_enabled'] = true; " --volume /srv/gitlab/config:/etc/gitlab --volume /var/log/gitlab:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:13.12.12-ce.0 ExecStop=/bin/bash -c "/usr/bin/docker ps | /bin/grep 'gitlab-ce' | /usr/bin/awk '{print $1}' | /usr/bin/xargs docker stop" Restart=always RestartSec=90s [Install] WantedBy=multi-user.target
Теперь мы можем запустить его и включить его автоматический запуск при старте системы:
systemctl start gitlab systemctl enable gitlab
Теперь это полноценный сервис, который мы можем мониторить, включать, выключать, который штатно завершиться при завершении работы системы и так же штатно запуститься при старте системы. Можем видеть его статус с помощью команды systemctl status gitlab:
На порту 22 у нас работает ssh+git. На порту 2022 ssh от нашего gitlab. Web-интерфейс gitlab-а доступен в браузере по http://ip-адрес-вашего-сервера/ для дальнейшей настройки.
Установка Docker на debian
Установка Docker на Ubuntu
Docker Registry - установка и использование хранилища образов Docker
Если считаете, что парсинг Вашего сайта - проблема, то эта статья для Вас.
Особенности серверных приложений, работающих с сетью IoT-устройств на практике и в теории