在Debian上通过Docker容器化部署GitLab,可以按照以下步骤进行。这种方法不仅简化了安装过程,还便于管理和扩展。
Debian系统:确保你有一个运行中的Debian(推荐使用最新的稳定版,如Debian 12或11)。
Docker已安装:如果尚未安装Docker,请先安装它。可以使用以下命令安装:
sudo apt update
sudo apt install -y docker.io
Docker Compose(可选但推荐):虽然可以使用docker run
命令逐个启动服务,但使用Docker Compose可以更方便地管理多个容器。
安装Docker Compose:
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
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data
docker-compose.yml
在项目目录中创建一个docker-compose.yml
文件,并添加以下内容:
version: '3.7'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com' # 替换为你的域名或IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 替换为你的访问URL
gitlab_rails['lfs_enabled'] = true
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 可选,更改SSH端口
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/opt/gitlab/config:/etc/gitlab'
- '/opt/gitlab/logs:/var/log/gitlab'
- '/opt/gitlab/data:/var/opt/gitlab'
说明:
external_url
:设置GitLab的外部访问URL,请根据你的实际情况修改。gitlab_rails['lfs_enabled']
:启用Git LFS(大文件存储),根据需要启用或禁用。80
和 443
:HTTP和HTTPS访问。22
:SSH访问(可选,如果需要自定义SSH端口,请同时修改gitlab_rails['gitlab_shell_ssh_port']
)。在包含docker-compose.yml
的目录下运行以下命令:
sudo docker-compose up -d
这将下载GitLab镜像(如果尚未下载)并启动所有服务。
如果你的服务器启用了防火墙(如ufw
),需要允许HTTP(80)、HTTPS(443)和SSH(22)端口的流量。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw reload
打开浏览器,访问http://gitlab.example.com
(替换为你的服务器地址)。首次访问时,GitLab会引导你进行初始设置,包括设置管理员密码和配置电子邮件等。
如果你更喜欢手动管理Docker容器,可以按照以下步骤操作:
sudo docker pull gitlab/gitlab-ce:latest
创建用于存储GitLab数据、配置和日志的Docker卷:
sudo mkdir -p /opt/gitlab/config
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data
sudo docker run --detach \
--hostname 'gitlab.example.com' \
--restart always \
-p 80:80 \
-p 443:443 \
-p 22:22 \
--name gitlab \
-v '/opt/gitlab/config:/etc/gitlab' \
-v '/opt/gitlab/logs:/var/log/gitlab' \
-v '/opt/gitlab/data:/var/opt/gitlab' \
gitlab/gitlab-ce:latest
说明:
参数与docker-compose.yml
中的配置类似,确保端口映射和卷挂载正确。
同样,访问http://gitlab.example.com
进行初始设置。
为了提高安全性,建议为GitLab配置SSL证书。可以使用Let’s Encrypt免费获取证书,并通过Docker容器进行管理。
安装Certbot
sudo apt install certbot python3-certbot-dns-cloudflare # 以Cloudflare为例,根据你的DNS提供商选择合适的插件
创建Certbot配置目录
sudo mkdir -p /etc/letsencrypt
sudo mkdir -p /var/www/certbot
创建Certbot的Docker Compose服务
在docker-compose.yml
中添加Certbot服务:
certbot:
image: certbot/dns-cloudflare
volumes:
- '/etc/letsencrypt:/etc/letsencrypt'
- '/var/www/certbot:/var/www/certbot'
environment:
- GOOGLE_APPLICATION_CREDENTIALS=/etc/letsencrypt/credentials.json
- DNS_CLOUDFLARE_EMAIL=your-email@example.com
- DNS_CLOUDFLARE_API_TOKEN=your_api_token
替换your-email@example.com
和your_api_token
为你的Cloudflare账户信息。
获取证书
运行Certbot命令获取证书:
sudo docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot --email your-email@example.com --agree-tos --no-eff-email -d gitlab.example.com
配置GitLab使用SSL
编辑GitLab配置文件:
sudo nano /opt/gitlab/config/gitlab.rb
添加或修改以下行:
external_url 'https://gitlab.example.com'
nginx['redirect_http_to_https'] = true
保存并退出,然后重新配置并重启GitLab:
sudo docker-compose exec gitlab gitlab-ctl reconfigure
sudo docker-compose restart gitlab
定期备份GitLab的数据非常重要。可以使用Docker Compose运行备份任务:
sudo docker-compose run --rm gitlab gitlab-rake gitlab:backup:create
备份文件将存储在挂载的/opt/gitlab/data/backups
目录中。恢复时,可以参考官方文档进行操作。
通过以上步骤,你可以在Debian系统上使用Docker容器化部署GitLab。这种方法不仅简化了安装和管理过程,还提高了系统的可移植性和可扩展性。根据实际需求,你可以进一步自定义配置,如调整资源限制、添加监控等。
如果在部署过程中遇到问题,建议参考GitLab官方文档获取更多详细信息和故障排除指南。