Ubuntu上使用Docker部署GitLab的完整流程
GitLab容器化部署依赖Docker,首先需在Ubuntu上安装Docker:
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install -y curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker APT仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
# 验证Docker安装
sudo docker run hello-world
Docker Compose可简化多容器管理,建议安装:
# 下载最新版Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
docker run命令快速部署# 拉取GitLab社区版镜像(最新版)
docker pull gitlab/gitlab-ce:latest
# 创建数据持久化目录(宿主机)
sudo mkdir -p /srv/gitlab/{config,logs,data}
# 启动GitLab容器
sudo docker run -d \
--hostname yourdomain.com \ # 替换为你的域名或IP
--publish 80:80 \ # Web界面端口
--publish 443:443 \ # HTTPS端口(可选)
--publish 22:22 \ # SSH端口
--name gitlab \ # 容器名称
--restart always \ # 开机自启
--volume /srv/gitlab/config:/etc/gitlab \ # 配置文件挂载
--volume /srv/gitlab/logs:/var/log/gitlab \ # 日志文件挂载
--volume /srv/gitlab/data:/var/opt/gitlab \ # 数据文件挂载
gitlab/gitlab-ce:latest
docker-compose.yml文件管理(推荐)# 创建项目目录
mkdir -p ~/gitlab && cd ~/gitlab
# 创建docker-compose.yml文件
cat <<EOF > docker-compose.yml
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m' # 共享内存(解决某些环境下的性能问题)
EOF
# 启动GitLab容器
docker-compose up -d
--volume(或volumes)参数将宿主机目录挂载到容器内,确保数据不会因容器删除而丢失。--name参数指定容器名称(如gitlab),方便后续管理(如启动、停止、查看日志)。GitLab容器启动后,首次登录需使用默认root用户的初始密码:
# 进入容器
docker exec -it gitlab /bin/bash
# 查看初始密码(若使用docker-compose,路径为./config/initial_root_password)
cat /etc/gitlab/initial_root_password
# 退出容器
exit
http://yourdomain.com(或宿主机IP,如http://192.168.1.100)。若需修改GitLab访问地址(如从IP改为域名),可进入容器修改配置文件:
docker exec -it gitlab /bin/bash
# 编辑GitLab配置文件
vim /etc/gitlab/gitlab.rb
# 找到external_url,取消注释并设置为新地址(如external_url 'http://yourdomain.com')
external_url 'http://yourdomain.com'
# 保存退出(vim中按:wq)
# 重新加载配置
gitlab-ctl reconfigure
gitlab-ctl restart
# 查看GitLab容器状态
docker ps -a | grep gitlab
# 启动GitLab容器
docker start gitlab
# 停止GitLab容器
docker stop gitlab
# 重启GitLab容器
docker restart gitlab
# 查看容器日志(排查问题)
docker logs -f gitlab
# 进入GitLab容器
docker exec -it gitlab /bin/bash
# 查看GitLab服务状态
gitlab-ctl status
# 重启GitLab服务
gitlab-ctl restart
# 重新加载配置
gitlab-ctl reconfigure
# 停止GitLab服务
gitlab-ctl stop
GitLab对资源要求较高,建议分配至少4GB内存(最低2GB,但可能导致性能问题),2核CPU,50GB以上磁盘空间。
若使用UFW防火墙,需开放相关端口:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 22/tcp # SSH
sudo ufw reload
定期备份GitLab数据(宿主机挂载目录中的config、logs、data文件夹),建议使用rsync或tar命令归档:
# 示例:备份到/home/user/gitlab_backup目录
mkdir -p /home/user/gitlab_backup
tar -czvf /home/user/gitlab_backup/gitlab_$(date +%F).tar.gz -C /srv/gitlab ./
gitlab.rb中的external_url为https://yourdomain.com,并配置SSL证书路径。docker-compose.yml中添加mem_limit、cpu_shares等参数,限制容器资源使用。通过以上步骤,即可在Ubuntu上使用Docker快速部署GitLab,并进行基本的管理和维护。如需更高级的配置(如CI/CD、集成LDAP),可参考GitLab官方文档。