首页主机资讯Linux中GitLab的容器化部署

Linux中GitLab的容器化部署

时间2025-11-07 17:38:04发布访客分类主机资讯浏览1442
导读:Linux环境下GitLab容器化部署指南(基于Docker Compose) 一、准备工作 1. 安装Docker与Docker Compose GitLab容器化部署依赖Docker引擎和Docker Compose(用于简化多容器管理...

Linux环境下GitLab容器化部署指南(基于Docker Compose)

一、准备工作

1. 安装Docker与Docker Compose

GitLab容器化部署依赖Docker引擎和Docker Compose(用于简化多容器管理)。

  • 安装Docker
    更新系统包并添加Docker官方GPG密钥,然后安装Docker CE(社区版):
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install -y docker-ce
    sudo systemctl start docker &
        &
     sudo systemctl enable docker  # 启动并设置开机自启
    
  • 安装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
    

2. 准备数据卷目录

GitLab的数据(配置、日志、仓库文件)需通过卷挂载到宿主机以实现持久化。创建专用目录(如/srv/gitlab):

sudo mkdir -p /srv/gitlab/{
config,logs,data}
    
sudo chown -R 1000:1000 /srv/gitlab  # GitLab容器内用户UID为1000,需匹配权限

二、使用Docker Compose部署GitLab

1. 创建docker-compose.yml文件

/srv/gitlab目录下创建docker-compose.yml,定义GitLab服务及资源配置:

version: '3.6'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest  # 推荐使用稳定版标签(如26.0.0-ce.0)
    container_name: gitlab
    restart: always  # 开机自启
    hostname: 'gitlab.example.com'  # 替换为你的服务器域名或IP
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com'  # 初始外部URL(后续可修改)
    ports:
      - '8080:80'   # HTTP端口(宿主机:容器)
      - '8443:443'  # HTTPS端口(可选)
      - '2222:22'   # SSH端口(避免与宿主机SSH冲突)
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'   # 配置文件卷
      - '/srv/gitlab/logs:/var/log/gitlab' # 日志文件卷
      - '/srv/gitlab/data:/var/opt/gitlab' # 数据文件卷(仓库、数据库等)
    shm_size: '256m'  # 共享内存(解决高并发时的性能问题)

2. 启动GitLab容器

docker-compose.yml所在目录执行以下命令:

cd /srv/gitlab
docker-compose up -d  # 后台启动容器

等待容器启动完成(约1-2分钟),可通过docker ps查看容器状态。

三、初始配置与访问

1. 获取初始root密码

GitLab容器启动后,初始root用户的密码会保存在容器内的/etc/gitlab/initial_root_password文件中。执行以下命令查看:

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

输出结果类似:Password: xk9fj2a1b3c4d5e6f7g8h9i0j,记下该密码。

2. 访问GitLab Web界面

打开浏览器,输入http://< 服务器IP或域名> :8080(如http://192.168.1.100:8080),进入登录页面。

  • 用户名:root
  • 密码:上一步获取的初始密码

首次登录后,系统会强制要求修改root密码(建议设置为复杂密码,包含大小写字母、数字和符号)。

3. 配置外部URL(可选)

若需使用自定义域名(如gitlab.yourdomain.com),需修改GitLab全局配置:

docker exec -it gitlab vim /etc/gitlab/gitlab.rb

找到external_url配置项,修改为你的域名:

external_url 'http://gitlab.yourdomain.com'

保存退出后,重新配置GitLab使更改生效:

docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart

重启后,通过新域名访问GitLab即可。

四、常见问题排查

1. 端口冲突

若宿主机80、443或22端口已被占用,修改docker-compose.yml中的ports配置(如将8080:80改为9090:80),并同步更新external_url中的端口。

2. 502 Bad Gateway错误

通常因GitLab服务未完全启动或配置错误导致。解决方法:

  • 等待2-3分钟(GitLab启动较慢);
  • 检查容器日志:docker logs -f gitlab,定位具体错误(如端口冲突、磁盘空间不足);
  • 修改gitlab.rb中的unicorn['port'](如改为8084),并重新配置。

3. 权限问题

若出现“Permission denied”错误,确保宿主机挂载目录的权限正确(chown -R 1000:1000 /srv/gitlab),或以root用户运行容器(不推荐)。

五、后续维护

1. 备份数据

GitLab数据存储在/srv/gitlab/data目录(卷挂载),定期备份该目录即可(如使用rsynctar命令)。

2. 更新GitLab

若需升级GitLab版本,修改docker-compose.yml中的image标签(如gitlab/gitlab-ce:26.1.0-ce.0),然后执行:

docker-compose pull  # 拉取新镜像
docker-compose up -d # 重启容器(自动应用新版本)

注意:升级前建议备份数据,避免版本兼容性问题。

3. 配置HTTPS(可选)

为提升安全性,建议配置Let’s Encrypt免费SSL证书。修改gitlab.rb文件:

letsencrypt['enabled'] = true
letsencrypt['contact_emails'] = ['your.email@example.com']
external_url 'https://gitlab.example.com'

重新配置并重启:

docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart

配置完成后,通过https://gitlab.example.com访问GitLab(浏览器地址栏显示锁图标)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux中GitLab的容器化部署
本文地址: https://pptw.com/jishu/745298.html
LibOffice在Ubuntu占多少内存 Ubuntu下LibOffice如何更新

游客 回复需填写必要信息