Linux下GitLab容器化部署指南(基于Docker)
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata
curl -fsSL https://get.docker.com | sudo bash
sudo systemctl enable --now docker
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
mkdir -p /opt/gitlab/{config,logs,data}
/opt/gitlab
目录下创建docker-compose.yml
,内容如下:version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用社区版(免费)
container_name: gitlab
restart: always # 容器退出时自动重启
hostname: 'gitlab.example.com' # 替换为你的服务器IP或域名
ports:
- '8080:80' # HTTP端口(Web访问)
- '8443:443' # HTTPS端口
- '2222:22' # SSH端口(避免与宿主机冲突)
volumes:
- './config:/etc/gitlab' # 配置文件挂载
- './logs:/var/log/gitlab' # 日志文件挂载
- './data:/var/opt/gitlab' # 数据文件挂载(仓库、数据库等)
shm_size: '256m' # 共享内存(解决数据库性能问题)
/opt/gitlab
目录下执行:docker-compose up -d
查看容器状态:docker-compose ps
(若状态为"Up"则启动成功)。docker pull gitlab/gitlab-ce:latest
docker run -d \
--hostname gitlab.example.com \
--name gitlab \
--restart always \
-p 8080:80 -p 8443:443 -p 2222:22 \
-v /opt/gitlab/config:/etc/gitlab \
-v /opt/gitlab/logs:/var/log/gitlab \
-v /opt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
/etc/gitlab/initial_root_password
文件中,通过以下命令查看:docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
http://<服务器IP>:8080
,使用root账号和上述密码登录。gitlab.rb
文件:docker exec -it gitlab vim /etc/gitlab/gitlab.rb
示例配置(修改external_url
和SSH端口):external_url 'http://gitlab.example.com' # 替换为你的域名或IP
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 与docker-compose中的SSH端口一致
保存后重新加载配置:docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart
/var/opt/gitlab/backups
):docker exec -t gitlab gitlab-backup create
/opt/gitlab/data/backups
目录,执行恢复命令:docker exec -t gitlab gitlab-backup restore BACKUP=<备份文件名>
shm_size
(共享内存)以提升数据库性能(如shm_size: '512m'
)。gitlab.rb
中的monitoring
配置。docker-compose.yml
和gitlab.rb
中的配置。/opt/gitlab/data
目录(包含仓库、数据库等核心数据)。