Установка Gitlab в Docker

GitLab+Docker
GitLab+Docker

В последнее время всё больше организаций, со своими командами разработки просят развернуть различные инструменты для работы на собственных мощностях. Причин на это множество, от желания держать код поближе к себе, до внутренних разработок, вовсе не имеющих выхода в интернет.
Чаще всего, просят развернуть именно Gitlab.

Gitlab — изначально система контроля версии, а в настоящее время полноценный инструмент CI\CD включающий в себя множество инструментов.

В этой статье расскажу как развернуть Self-hosted Gitlab, включая Gitlab Container Registry используя Docker.

И начнем мы с минимальных системных требований. Как заявляет производитель, минимальные системные требования покрывают нужды до 500 пользователей, далее уже требуется увеличивать мощности.
И так, что бы развернуть Gitlab вам понадобится машинка:

  • 4 ЦПУ
  • 4 Гб ОЗУ
  • ~ 20 Гб на диске.

Однако, опыт подсказывает, что минимальна конфигурация это 2 ЦПУ, 6 ОЗУ и ~50Гб.

Далее, первым делом готовим машину для установки GitLab, разворачиваем Docker. О том как это сделать я рассказывал в этой статье: Установка Docker в Linux

Поскольку для работы с гитом так же используется ssh на 22 порту, следующим шагом — мы меняем стандартный порт машины, на не стандартный. Номер порта конечно выбирать вам, я обычно ставлю 222.

Предварительно не забудьте добавить новый порт в разрешенные в вашем Firewall

Если вы используете UFW в качестве Firewall:

sudo ufw allow 222/tcp
UFW

Если вы используете IPTables в качестве Firewall:

sudo iptables -A INPUT -p tcp --dport 222 -j ACCEPT
IPTables

Для этого открываем на редактирование /etc/ssh/sshd_conf, раскоменчиваем строку с портом, и указываем нужный.

sudo nano /etc/ssh/sshd_config
Меняем настройки порта по умолчанию
Меняем номер порта по умолчанию

Сохраняем и перезапускаем службу SSH. В этот момент, вы конечно не вылетите, но все новые сессии будут приниматься на 222 порте. Для проверки — рекомендую сразу перезайти. Что бы потом развернув всё не столкнутся с этой проблемой.

Далее готовим нужные каталоги для проброса в контейнер. На случай если произойдет какая-то авария, данные останутся ( Но это не исключает необходимость резервного копирования)

# Каталог для конфигов гита 
mkdir -p /srv/gitlab/config
# Каталог для данных
mkdir -p /srv/gitlab/data
# Каталог для хранения логов
mkdir -p /srv/gitlab/logs
# Каталог для конфига gitlab registry (если будете в последствии добавлять)
mkdir -p /srv/gitlab/registry
Готовим каталоги

Теперь остается запустить сам GitLab и дождаться его развертывания:

sudo docker run --detach \
  --log-opt max-size=1g \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --volume /srv/gitlab/registry:/var/opt/gitlab/registry \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.com/';" \
  gitlab/gitlab-ee:latest
  • detach — запускает контейнер в бек граунде
  • log-opt max-size=1g — ограничиваем размер файла лога для контейнера 1 гигом.
  • hostname gitlab.example.com — надо заменить на доменное имя, которое вы любезно пропишите в днс, для удобства работы.
  • publish 443:443 —publish 80:80 —publish 22:22 — порты которые мы пробрасываем наружу (именно для этого мы меняли порт ssh у машины).
  • name gitlab — удобное имя для контейнера, что бы проще было им оперировать в дальнейшем.
  • restart always — перезапуск при любых обстоятельствах.
  • volume *** — точки монтирования томов.
  • env GITLAB_OMNIBUS_CONFIG=»external_url ‘https://gitlab.example.com/’;» -параметры запуска гита, externar_url — нужно заменить на доменное имя, которое вы пропишите\прописали в днс для ресурса. Если имени не предвидится и обращения будут только по IP, то заменить на http://ip_addr
  • gitlab/gitlab-ee:latest — имя и версия запускаемого образа. Latest — самая свежая.

После выполнения, можете для удобства открыть логи контейнера на просмотр, и наслаждаться бегущими строчками пока гит разворачивается. Для этого введите:

docker logs -f gitlab
Для просмотра лога реальном времени

На минимальных конфигурациях установка занимает в среднем от 5 до 10 минут. Как только установка завершится — можете переходить в браузере по указанному ранее адресу. Если видите приглашение для ввода логина и пароля — можно логиниться, если ошибку 404 или 502 — скорей всего требуется еще немного подождать и установка еще не завершилась.

Для первого логина учетная запись по умолчанию root, а вот пароль надо будет выдернуть из лога:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Получаем пароль root
Приглашение ввести логин и пароль
Приглашение ввести логин\пароль

Полезные материалы по теме:

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*