Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить GitLab с использованием Docker Compose.

GitLab - это открытая платформа для разработки программного обеспечения с встроенным контролем версий, отслеживанием проблем, рецензированием кода, CI/CD и многим другим.

💾 Репозиторий, использованный в этом руководстве, можно найти на GitHub.

Мы будем использовать Traefik в качестве нашего обратного прокси. Он будет отвечать за получение криптографических сертификатов от Let’s Encrypt для ваших доменных имен и направлять запросы к соответствующим службам на основе этих доменов.

❗ Для получения криптографических сертификатов вам потребуются записи типа A во внешней зоне DNS, которые указывают на IP-адрес вашего сервера, где установлен Traefik. Если вы создали эти записи недавно, следует подождать, прежде чем начать установку сервисов. Полная репликация данных записей между DNS-серверами может занять от нескольких минут до 48 часов или даже больше в редких случаях.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.

Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.

Также на сервере должен быть установлен Docker Engine и Docker Compose.

Узнать о том, как установить Docker Engine на Ubuntu Server, вы можете, прочитав “Установка Docker Engine и Docker Compose на Ubuntu Server”.

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

💡 Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к сервисам:

  • TCP порт 80 - для получения бесплатного криптографического сертификата через центр сертификации Let’s Encrypt.
  • TCP порт 443 - для доступа к веб-интерфейсу GitLab.
  • TCP порт 2222 - для безопасных операций Git через SSH, управления SSH-ключами пользователя, зашифрованной передачи данных и задач администрирования сервера.

Подключаемся к серверу, на который планируется установить GitLab.

Теперь необходимо создать сети для ваших служб.

Создаем сеть для Traefik с помощью команды:

docker network create traefik-network

Установка GitLab с использованием Docker Compose

Создаем сеть для GitLab с помощью команды:

docker network create gitlab-network

Установка GitLab с использованием Docker Compose

Далее нужно клонировать репозиторий, который содержит конфигурационные файлы, которые содержать все необходимые условия для работы GitLab.

Клонировать репозиторий можно с помощью команды:

git clone https://github.com/heyValdemar/gitlab-traefik-letsencrypt-docker-compose.git

Установка GitLab с использованием Docker Compose

Переходи в директорию с репозиторием с помощью команды:

cd gitlab-traefik-letsencrypt-docker-compose

Установка GitLab с использованием Docker Compose

Далее вам необходимо изменить переменные в файле .env в соответствии с вашими требованиями.

💡 Обратите внимание, что .env должен находиться в той же директории, что и gitlab-traefik-letsencrypt-docker-compose.yml.

Теперь запустим GitLab с помощью команды:

docker compose -f gitlab-traefik-letsencrypt-docker-compose.yml -p gitlab up -d

Установка GitLab с использованием Docker Compose

Теперь давайте получим пароль для пользователя root. Это позволит вам войти в панель управления GitLab.

Используйте следующую команду:

sudo docker exec -it $(sudo docker ps -aqf "name=gitlab-gitlab-1") grep 'Password:' /etc/gitlab/initial_root_password

Установка GitLab с использованием Docker Compose

Пароль для пользователя root успешно получен.

Установка GitLab с использованием Docker Compose

Для доступа к панели управления GitLab необходимо с рабочей станции перейти по ссылке https://gitlab.heyvaldemar.net, где gitlab.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к GitLab.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Используйте root в качестве имени пользователя и ранее полученный пароль, затем нажмите кнопку “Sign in”.

Установка GitLab с использованием Docker Compose

Добро пожаловать в панель управления GitLab.

Установка GitLab с использованием Docker Compose

Теперь давайте получим регистрационный токен для GitLab Runner и зарегистрируем его для обработки предстоящих заданий CI/CD.

GitLab Runner это открытый проект, который используется для выполнения ваших заданий CI/CD и отправки результатов обратно в GitLab.

Чтобы просмотреть конфигурацию GitLab Runner, перейдите по адресу https://gitlab.heyvaldemar.net/admin/runners, где gitlab.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к GitLab.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Нажмите на три точки справа, чтобы получить доступ к меню, затем скопируйте регистрационный токен.

Установка GitLab с использованием Docker Compose

Теперь давайте зарегистрируем GitLab Runner.

Вернитесь в эмулятор терминала.

💡 Не забудьте заменить REGISTRATION_TOKEN на значение “Registration token”, полученное на предыдущем шаге в веб-интерфейсе GitLab.

Для регистрации runner используйте следующую команду:

REGISTRATION_TOKEN=LgcfPEKgawRTGR8P4uPQ \
&& docker exec -it $(sudo docker ps -aqf "name=gitlab-runner-1") gitlab-runner register \
--non-interactive \
--url "http://gitlab/" \
--registration-token "$REGISTRATION_TOKEN" \
--executor "docker" \
--docker-image docker:stable \
--description "docker-runner-1" \
--tag-list "docker,linux" \
--run-untagged="true" \
--docker-privileged \
--output-limit "50000000" \
--access-level="not_protected" \
--docker-volumes "/var/run/docker.sock:/var/run/docker.sock"

Установка GitLab с использованием Docker Compose

GitLab Runner был успешно зарегистрирован и готов к работе.

Установка GitLab с использованием Docker Compose

Вернитесь в веб-интерфейс и убедитесь, что GitLab Runner теперь в сети.

Установка GitLab с использованием Docker Compose

Для доступа к панели управления Traefik необходимо с рабочей станции перейти по ссылке https://traefik.gitlab.heyvaldemar.net, где traefik.gitlab.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным Traefik.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Указываем имя пользователя и пароль, заданный ранее в файле .env, и нажимаем на кнопку “OK”.

Установка GitLab с использованием Docker Compose

Добро пожаловать в панель управления Traefik.

Установка GitLab с использованием Docker Compose


Мои курсы

🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить Docker, покорить Kubernetes или углубить свои навыки в области DevOps, мои курсы предлагают структурированный путь к повышению вашего технического мастерства.

Мои услуги

💼 Загляните в мой каталог услуг и узнайте, как мы можем сделать вашу технологическую жизнь лучше. Будь то повышение эффективности вашей IT-инфраструктуры, развитие вашей карьеры или расширение технологических горизонтов — я здесь, чтобы помочь вам достичь ваших целей. От DevOps-трансформаций до сборки игровых компьютеров — давайте сделаем ваши технологии непревзойденными!

Пополнить запасы моего кофе

💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi

Подпишись

Telegram | Блог
🎬 YouTube
🐦 Twitter
🎨 Instagram
🐘 Mastodon
🧵 Threads
🎸 Facebook
🧊 Bluesky
🎥 TikTok
💻 LinkedIn
📣 daily.dev Squad
🧩 LeetCode
🐈 GitHub

Этот контент создан искусственным интеллектом?

Нет! Каждая статья — результат моей работы, наполненной страстью к Docker и десятилетиями опыта в IT. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.

Владимир Михалев
Я - Владимир Михалев, Капитан Docker, но друзья могут называть меня Вальдемарыч.

DevOps комьюнити

Привет! 👋 Если у тебя есть вопросы по установке или настройке, то задайте их мне и другим IT-экспертам нашего сообщества: