Введение 

GitLab  —  это веб-инструмент управления репозиториями Git, который помогает командам совместно работать над кодом. Кроме того, он предоставляет полную платформу DevOps с контролем версий, ревью кода, отслеживанием проблем (англ. issue) и CI/CD.

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

Docker невероятно упрощает и ускоряет развертывание экземпляра GitLab. Вы можете сделать это одной командой, не беспокоясь об установке и настройке зависимостей вручную. 

Это отличное решение для разработчиков ПО, которые хотят быстро и легко начать работу с GitLab. 

Развертывание GitLab с помощью файла Compose от Sameersbn 

Начинаем развертывание GitLab со скачивания актуальной версии файла Compose

wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

Теперь генерируем 3 случайные строки длиной не менее 64 символов, открываем файл Compose и применяем эти строки для: 

  • GITLAB_SECRETS_OTP_KEY_BASE. Используется для шифрования секретных ключей двухфакторной аутентификации (2FA) в базе данных. Ни один пользователь не сможет войти в систему с 2FA при потере этого ключа. 
  • GITLAB_SECRETS_DB_KEY_BASE. Нужен для шифрования секретных ключей CI и импорта учетных данных. В случае изменения/потери вы уже не сможете задействовать секретные ключи CI. 
  • GITLAB_SECRETS_SECRET_KEY_BASE. Требуется для генерации ссылок для сброса пароля и стандартных функций аутентификации. Вы не сможете сбросить пароли через электронную почту при ее потере/изменении.

Запуск экземпляра GitLab

docker-compose up

Развертывание GitLab вручную с помощью команд Docker 

Вместо скачивания актуальной версии файла Compose от Sameersbn вы можете вручную запустить контейнер GitLab, контейнер Redis и контейнер PostgreSQL за 3 простых шага. 

Шаг 1. Запуск контейнера PostgreSQL 

docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm,btree_gist' \
--volume ./gitlab_postgresql:/var/lib/postgresql \
sameersbn/postgresql:12-20200524

Шаг 2. Запуск контейнера Redis 

docker run --name gitlab-redis -d \
--volume ./gitlab_redis:/var/lib/redis \
sameersbn/redis:latest

Шаг 3. Запуск контейнера GitLab

docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
--volume ./gitlab_data:/home/git/data \
sameersbn/gitlab:15.10.0

Примечание. Команды Docker используют общие тома (англ. volume), обозначенные как ./. Они создаются в директории, в которой выполняется команда docker run

Доступ к экземпляру GitLab

После успешного запуска приложения GitLab, которое может занять несколько минут, вы можете перейти в свой браузер, направить его на http://localhost:10080 и установить пароль для аккаунта пользователя root

Теперь приложение GitLab готово для тестирования, и вы можете разместить в нем свой код. 

Заключение 

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

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

В этом случае рекомендую воспользоваться файлом Compose от Sameersbn и добавить перед ним Traefik Proxy, тем самым предоставляя доступ через публичное доменное имя, а не через IP.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Paul Knulst: How To Deploy GitLab With Docker In 5 Seconds Or Less

Предыдущая статьяПереход с Pandas на Polars: 7 простых шагов
Следующая статьяПочему стоит упрощать проекты МО