debian

GitLab在Debian上的容器化部署如何实现

小樊
33
2025-05-26 19:15:10
栏目: 智能运维

在Debian上通过Docker容器化部署GitLab,可以按照以下步骤进行。这种方法不仅简化了安装过程,还便于管理和扩展。

前提条件

  1. Debian系统:确保你有一个运行中的Debian(推荐使用最新的稳定版,如Debian 12或11)。

  2. Docker已安装:如果尚未安装Docker,请先安装它。可以使用以下命令安装:

    sudo apt update
    sudo apt install -y docker.io
    
  3. 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
    

使用Docker Compose部署GitLab

1. 创建项目目录

首先,创建一个目录来存放GitLab的配置和数据:

sudo mkdir -p /opt/gitlab/config
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data

2. 创建并配置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'

说明:

3. 初始化并启动GitLab

在包含docker-compose.yml的目录下运行以下命令:

sudo docker-compose up -d

这将下载GitLab镜像(如果尚未下载)并启动所有服务。

4. 配置防火墙(可选)

如果你的服务器启用了防火墙(如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

5. 访问GitLab

打开浏览器,访问http://gitlab.example.com(替换为你的服务器地址)。首次访问时,GitLab会引导你进行初始设置,包括设置管理员密码和配置电子邮件等。

使用Docker运行GitLab(不使用Docker Compose)

如果你更喜欢手动管理Docker容器,可以按照以下步骤操作:

1. 拉取GitLab镜像

sudo docker pull gitlab/gitlab-ce:latest

2. 创建数据卷

创建用于存储GitLab数据、配置和日志的Docker卷:

sudo mkdir -p /opt/gitlab/config
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data

3. 运行GitLab容器

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中的配置类似,确保端口映射和卷挂载正确。

4. 访问GitLab

同样,访问http://gitlab.example.com进行初始设置。

配置SSL(可选但推荐)

为了提高安全性,建议为GitLab配置SSL证书。可以使用Let’s Encrypt免费获取证书,并通过Docker容器进行管理。

使用Certbot和Docker Compose配置SSL

  1. 安装Certbot

    sudo apt install certbot python3-certbot-dns-cloudflare # 以Cloudflare为例,根据你的DNS提供商选择合适的插件
    
  2. 创建Certbot配置目录

    sudo mkdir -p /etc/letsencrypt
    sudo mkdir -p /var/www/certbot
    
  3. 创建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.comyour_api_token为你的Cloudflare账户信息。

  4. 获取证书

    运行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
    
  5. 配置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官方文档获取更多详细信息和故障排除指南。

0
看了该问题的人还看了