
В этом руководстве мы рассмотрим, как быстро поднять свой GitLab сервер на контейнерах Docker, находящийся за обратным прокси сервером NGINX. Предполагается, что у вас уже установлен движок контейнеризации приложений Docker и Compose, а также обратный прокси сервер NGINX.
GitLab сервер будет доступен по адресу: git.example.com. Также не забываем добавить А запись для домена git.example.com в DNS.
Итак, для начала создадим структуру каталогов для нашего GitLab:
mkdir -p /opt/gitlab/{config,logs,data}
Далее приводим файл docker-compose.yml к следующему содержимому:
version: '3.7' services: web: image: 'gitlab/gitlab-ce:15.2.0-ce.0' restart: always hostname: 'git.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://git.example.com' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '127.0.0.1:8080:80' - '2224:22' volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab' shm_size: '256m'
В качестве образа мы используем последнюю версию GitLab Community Edition 15.2.0 (на момент написания статьи), вешаем GitLab на loopback интерфейс, а для ssh используем нестандартный порт 2224.
Выполняем билд и запускаем контейнеры:
docker compose -f /opt/gitlab/docker-compose.yml up -d –build
Проверяем статус контейнеров:
docker ps
Теперь необходимо отредактировать основной конфиг файл GitLab и раскомментировать следующие параметры:
vi /opt/gitlab/config/gitlab.rb
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.example.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "git@example.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['gitlab_email_from'] = 'git@example.com' gitlab_rails['gitlab_email_display_name'] = 'GitLab' nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "Host" => "git.example.com", "X-Real-IP" => "$remote_addr", "X-Forwarded-For" => "$proxy_add_x_forwarded_for", "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on", "Upgrade" => "$http_upgrade", "Connection" => "$connection_upgrade" }
Мы разрешили использовать отправку писем через SMTP, а также указали параметры nginx для работы за обратным прокси. Для вступления в силу изменений, перезапускаем контейнеры:
docker compose -f /opt/gitlab/docker-compose.yml restart
Создадим конфиг виртуального хоста на стороне обратного прокси NGINX:
server { listen 80; server_name git.example.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://localhost:8080; proxy_read_timeout 90; } error_log /var/log/nginx/git_example_com_error.log error; access_log /var/log/nginx/git_example_com_access.log; }
Проверяем и перечитываем конфиг:
nginx -t nginx -s reload
С помощью пакета certbot и python3-certbot-nginx можем получить SSL сертификат от Let’s Encrypt:
certbot --nginx -d git.example.com nginx -t nginx -s reload
Открываем сайт git.example.com в браузере и пытаемся авторизоваться. Пароль от root можно получить следующей командой на сервере:
docker exec -it gitlab-web-1 grep 'Password:' /etc/gitlab/initial_root_password
Источники:
docs.gitlab.com/ee/install/docker.html
www.czerniga.it/2021/11/14/how-to-install-gitlab-using-docker-compose
ссылка на оригинал статьи https://habr.com/ru/company/timeweb/blog/680594/
Добавить комментарий