Установка GitLab с помощью Docker Compose на виртуальную машину с Ubuntu

Предыдущий этап: Установка VMware и операционной системы Ubuntu

 

Мы ранее подготовили виртуальную машину с установленной пустой серверной Ubuntu, обновили пакеты и теперь готовы развернуть здесь Docker, затем, с его помощью развернуть GitLab. 

Devops для 1С. Стартовый экран Ubuntu

Следуя инструкциям на официальном сайте GitLab, Установка GitLab с помощью Docker | GitLab установку можно разбить на следующие этапы:

  1. Установка Docker
  2. Установка Docker compose
  3. Установка Gitlab

Предварительно, для удобства работы, установим рабочий стол GNOME он похож на привычный из Windows, появится привычный редактор текстов и браузер, но он не обязателен для решения поставленных целей, все равно вся настройка и установка будет производиться через командную строку. Чтобы установить рабочий стол необходимо ввести в командной строке:

$sudo apt install ubuntu-gnome-desktop

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

Devops для 1С. Окно авторизации Ubuntu

Теперь можно просто копировать команды со страницы и запускать их в терминале. Терминал тут кстати недалеко

1. Устанавливаем Docker

Вводим построчно, то что подсвечено синим - ввести одним копипастом):

$sudo apt update

$sudo apt install ca-certificates curl

$sudo install -m 0755 -d /etc/apt/keyrings

$sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

$sudo chmod a+r /etc/apt/keyrings/docker.asc

$echo \

  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \

  $sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$sudo apt update

Устанавливаем последний пакет:

$sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Проверяем на соответствующем пакете hello-world:

$sudo docker run hello-world

Должно появиться примерно такое окно:

 

Devops для 1С. "Hello world!" от Docker

2. Устанавливаем Docker Compose

$sudo apt update

$sudo apt install docker-compose-plugin

Проверяем установленную версию:

$docker compose version

Devops для 1С. Проверка версии Docker Compose

3. Устанавливаем GitLab.

Создаем путь для хранения логов, настроек и т.д. 

$sudo mkdir -p /srv/gitlab

Devops для 1С. Папка гитлаб для хранения логов, настрое и т.п.

Добавляем переменную среды GITLAB_HOME

$export GITLAB_HOME=/srv/gitlab

Переходим в home каталог текущего пользователя и создаем каталог, в котором будет располагаться настроечный файл docker-compose.

$cd ~

$sudo mkdir gitlab

$cd gitlab

Создадим в каталоге .yml файл:

$sudo nano docker-compose.yml

и заполним его следующим текстом:

version: '3.6' 

services: gitlab:

image: gitlab/gitlab-ee:-ee.0 

container_name: gitlab 

restart: always 

hostname: 'vladdeb' 

environment: 

GITLAB_OMNIBUS_CONFIG: 

external_url 'http://vladdeb' 

ports: 

- '8083:80' 

- '443:443' 

- '2224:22' 

volumes: 

- '$GITLAB_HOME/config:/etc/gitlab' 

- '$GITLAB_HOME/logs:/var/log/gitlab' 

- '$GITLAB_HOME/data:/var/opt/gitlab' 

shm_size: '256m'

Сохраняем (в nano последовательно выполняем комбинации клавиш Ctrl+X (выход),  Ctrl+Y (запрос о сохранении), Enter).

Докер контейнер не видит нашу переменную среды, поэтому занесем ее в env файл и сохраним его тут же:

$sudo nano .env

Добавляем одну строку GITLAB_HOME=/srv/gitlab и сохраняем. 

Devops для 1С. Файл .env в каталоге с файлом .yml

 

Не выходя из текущего каталога запускаем команду:

$sudo docker compose up -d

Получаем ошибку регистрации из-за отсутствия места (failed to register layer .. no space left on device).  Она означает, что несмотря на то что мы выделили 30Гб, их не хватило. Возможно, если бы не установка GNOME и уместились бы.

Devops для 1С. failed to register layer .. no space left on device

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

Devops для 1С. Добавление объема жесткого диска на vmware

Авторизуемся, зайдем в терминал, запустим команду:

$sudo cfdisk

 Получаем примерно такую картину, видим добавленное место в свободном статусе. 

Devops для 1С. Добавленное в vmware место висит как неразмеченное

Выбираем /dev/sda3, нажимаем кнопку Resize, увеличиваем размер на количество свободного места и нажимаем write. Свободный размер перераспределится. Получаем информацию о блочных устройствах:

$sudo lsblk

Для расширения тома на LVM нужно увеличить PV (Physical Volume):

$sudo pvresize /dev/sda3

Выполняем последовательно команды для настройки:

$sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

$sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

И в конце можно проверить, как теперь распределено место на жестком диске:

$df -h

Devops для 1С. Результат распределения диска в Ubuntu

Теперь давайте снова вернемся в каталог с .yml файлом. Напомню, он в /home/vlad/gitlab

$cd /home/vlad/gitlab

Вновь вводим в командную строку

$sudo docker compose up -d

В этот раз процесс завершился удачно.

Devops для 1С. Результат команды sudo docker compose up -d

Проверяем наш сервер по пути http://192.168.1.6:8083 (192.168.1.6 - это адрес который выдал DHCP нашей виртуальной машине, а 8083 - этот порт мы переопределили для 80 порта в .yml файле)

Devops для 1С. Окно входа в GitLab

Все отлично работает и доступно по этому адресу со всех компьютеров локальной сети. Попробуем зарегистрироваться и войти. Получаем ошибку "Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error".

Devops для 1С. GitLab. Ошибка: "Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error"

Авторизация под вновь созданными пользователями не проходит. Но под кем же залогиниться тогда? Ответ тут такой: пользователь для авторизации "root", а вот его пароль необходимо вытащить с помощью команды:

$sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Результат ее выполнения и вводим в поле пароль копи-пастой. 

Devops для 1С. Авторизация в GitLab под root

Все получилось, разблокируем пользователя vlad, которого добавили ранее.  

Devops для 1С. Аппрувим созданного через регистрацию пользователя

Проверяем на других машинах авторизацию под разблокированным пользователем - также успех. 

Devops для 1С. Gitlab. Вход не под root

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