#!/bin/bash
# ============================================================
# Скрипт 04: GitLab CE в Docker
# ============================================================
set -e
echo "▶️ 04. GitLab..."
echo ""
GITLAB_DIR="$HOME/docker/gitlab"
mkdir -p "$GITLAB_DIR"
cd "$GITLAB_DIR"
# ─── 1. docker-compose.yml ────────────────────────────────
echo "📝 Создание docker-compose.yml..."
cat > docker-compose.yml << 'EOF'
services:
gitlab:
image: gitlab/gitlab-ce:16.11.0-ce.0
container_name: gitlab-native
restart: always
hostname: gitlab.kspai.ru
ports:
- "8080:80"
- "2222:22"
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.kspai.ru'
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['redirect_http_to_https'] = false
gitlab_rails['gitlab_shell_ssh_port'] = 2222
letsencrypt['enable'] = false
gitlab_rails['trusted_proxies'] = ['172.16.0.0/12', '192.168.0.0/24']
nginx['real_ip_trusted_addresses'] = ['172.16.0.0/12', '192.168.0.0/24']
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/-/health"]
interval: 30s
timeout: 10s
retries: 5
EOF
# ─── 2. Запуск ────────────────────────────────────────────
echo "🐳 Запуск GitLab (может занять 3-5 минут)..."
docker compose up -d
echo ""
echo "⏳ Ожидание запуска (120 сек)..."
sleep 120
# ─── 3. Проверка ──────────────────────────────────────────
echo ""
echo "🔍 Проверка:"
docker compose ps
echo ""
curl -s -o /dev/null -w "GitLab: HTTP %{http_code}\n" http://localhost:8080/
# ─── 4. Пароль root ───────────────────────────────────────
echo ""
echo "🔑 Пароль root (сохраните!):"
docker exec gitlab-native grep 'Password:' /etc/gitlab/initial_root_password 2>/dev/null || echo " (будет доступен через 1-2 минуты)"
echo ""
echo "✅ 04_server_gitlab.sh завершён"
echo ""
echo "🌐 GitLab: https://gitlab.kspai.ru"