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

Следуя инструкциям на официальном сайте GitLab, Установка GitLab с помощью Docker | GitLab установку можно разбить на следующие этапы:
- Установка Docker
- Установка Docker compose
- Установка Gitlab
Предварительно, для удобства работы, установим рабочий стол GNOME он похож на привычный из Windows, появится привычный редактор текстов и браузер, но он не обязателен для решения поставленных целей, все равно вся настройка и установка будет производиться через командную строку. Чтобы установить рабочий стол необходимо ввести в командной строке:
$sudo apt install ubuntu-gnome-desktop
После установки перезагружаемся и получаем дружелюбное окно для авторизации. Вводим свой пароль.

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

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
Должно появиться примерно такое окно:

2. Устанавливаем Docker Compose
$sudo apt update
$sudo apt install docker-compose-plugin
Проверяем установленную версию:
$docker compose version

3. Устанавливаем GitLab.
Создаем путь для хранения логов, настроек и т.д.
$sudo mkdir -p /srv/gitlab

Добавляем переменную среды 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 и сохраняем.

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

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

Авторизуемся, зайдем в терминал, запустим команду:
$sudo cfdisk
Получаем примерно такую картину, видим добавленное место в свободном статусе.

Выбираем /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

Теперь давайте снова вернемся в каталог с .yml файлом. Напомню, он в /home/vlad/gitlab
$cd /home/vlad/gitlab
Вновь вводим в командную строку
$sudo docker compose up -d
В этот раз процесс завершился удачно.

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

Все отлично работает и доступно по этому адресу со всех компьютеров локальной сети. Попробуем зарегистрироваться и войти. Получаем ошибку "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
Результат ее выполнения и вводим в поле пароль копи-пастой.

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


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

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