version: "3.8" services: gitlab: image: gitlab/gitlab-ce:16.11.7-ce.0 container_name: gitlab-ce hostname: gitlab.local restart: always shm_size: '2g' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.1.83:8891' gitlab_rails['gitlab_shell_ssh_port'] = 8929 nginx['listen_port'] = 80 gitlab_rails['time_zone'] = 'Asia/Shanghai' # 性能优化 puma['worker_processes'] = 2 puma['min_threads'] = 2 puma['max_threads'] = 4 sidekiq['max_concurrency'] = 10 # 禁用不需要的服务节省资源 prometheus_monitoring['enable'] = false grafana['enable'] = false alertmanager['enable'] = false # 邮件配置 (需要 SMTP 设置) gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "${SMTP_USER:-your-email@qq.com}" gitlab_rails['smtp_password'] = "${SMTP_PASSWORD:-your-password}" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = "${SMTP_USER:-your-email@qq.com}" ports: - "8891:80" # HTTP Web UI - "8929:22" # SSH volumes: - ./config:/etc/gitlab - ~/ops/data/gitlab/logs:/var/log/gitlab - ~/ops/data/gitlab/data:/var/opt/gitlab healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80/-/health"] interval: 30s timeout: 10s retries: 3 start_period: 300s # GitLab Runner for CI/CD gitlab-runner: image: gitlab/gitlab-runner:latest container_name: gitlab-runner restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - ./gitlab-runner-config:/etc/gitlab-runner depends_on: - gitlab networks: default: name: gitlab-network