Debian中GitLab容器化部署指南(基于Docker)
确保Debian系统软件包为最新版本,避免依赖冲突:
sudo apt update && sudo apt upgrade -y
Docker是GitLab容器化的基础,通过以下命令快速安装:
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker # 设置开机自启
用于简化多容器配置管理(如GitLab+CI/CD),安装步骤如下:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
GitLab的数据(配置、日志、仓库)需持久化存储,避免容器删除后数据丢失:
sudo mkdir -p /opt/gitlab/{config,logs,data}
通过YAML文件定义GitLab服务,包含镜像、端口、卷、环境变量等配置:
version: '3.7'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用官方社区版镜像
container_name: gitlab
restart: always # 开机自动重启
hostname: 'gitlab.example.com' # 替换为你的域名或服务器IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 访问URL(需与hostname一致)
gitlab_rails['lfs_enabled'] = true # 启用Git LFS(大文件存储)
# gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 可选:修改SSH端口(默认22)
ports:
- '80:80' # HTTP访问
- '443:443' # HTTPS访问(需配置SSL)
- '22:22' # SSH访问(默认端口)
volumes:
- '/opt/gitlab/config:/etc/gitlab' # 配置文件目录
- '/opt/gitlab/logs:/var/log/gitlab' # 日志文件目录
- '/opt/gitlab/data:/var/opt/gitlab' # 数据目录(仓库、数据库等)
shm_size: '256m' # 共享内存(解决数据库连接问题)
在docker-compose.yml所在目录执行以下命令:
sudo docker-compose up -d # 后台启动容器
等待容器启动完成(约1-2分钟),可通过docker ps查看容器状态。
打开浏览器,输入http://gitlab.example.com(替换为你的实际域名/IP),进入初始化页面。
首次访问需设置root用户的密码(至少8位,包含大小写字母、数字和特殊字符),完成后使用root账号登录。
若服务器启用了ufw防火墙,需开放必要端口:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 22/tcp # SSH
sudo ufw reload
使用Let’s Encrypt免费获取SSL证书,提升数据传输安全性。可通过Certbot工具实现:
sudo apt install -y certbot python3-certbot-nginx # 若使用Nginx反向隧道
sudo certbot --nginx -d gitlab.example.com # 替换为你的域名
证书会自动配置到GitLab的Nginx服务中,访问https://gitlab.example.com即可。
为提高代码推送/拉取的安全性,建议使用SSH密钥:
# 生成密钥(本地机器执行)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 复制公钥到GitLab
cat ~/.ssh/id_rsa.pub
# 登录GitLab → Settings → SSH Keys → 粘贴公钥并保存
docker logs gitlab查看错误日志,常见原因包括端口冲突、磁盘空间不足。external_url配置是否正确。volumes目录挂载正确,避免容器删除后数据丢失。通过以上步骤,即可在Debian系统上完成GitLab的容器化部署,享受Docker带来的轻量、灵活和易管理特性。