本地GitLab的安装需要部署各种依赖和其他服务,费时且麻烦,而直接使用Docker进行容器化部署则省时简单,只要运行一行命令即可使用。本文记录了在实验室内网环境下利用Docker搭建源码托管工具GitLab,并列出一些必要的个性化配置项。
准备工作
操作系统
由于Ubuntu系统在Docker环境下兼容性更高,选择了 Ubuntu 18.04 LTS
作为操作系统环境。
安装Docker
Docker环境的安装十分简单,在这里不详述,根据Docker —— 从入门到实践选择对应操作系统的安装教程即可。
安装GitLab-ce
GitLab的安装可以直接
run
,或者通过docker-compose
文件指定安装流程,这里使用前者进行快速简单安装,后者后续更新。
拉取GitLab-ce镜像,查看镜像信息
$ docker pull gitlab/gitlab-ce
$ docker image ls创建并启动一个GitLab容器,
:
后的内容不要修改$ GITLAB_HOME = /home/docker/gitlab # 建立gitlab本地目录
$ docker run -d \
--hostname gitlab.example.com\ # 指定容器域名,创建镜像仓库用
-p 8443:443 \ # 容器443端口映射到主机8443端口(https)
-p 8080:80 \ # 容器80端口映射到主机8080端口(http)
-p 2222:22 \ # 容器22端口映射到主机2222端口(ssh)
--name gitlab \ # 容器名称
--restart always \ # 容器退出后自动重启
-v $GITLAB_HOME/config:/etc/gitlab \ # 挂载本地目录到容器配置目录
-v $GITLAB_HOME/logs:/var/log/gitlab \ # 挂载本地目录到容器日志目录
-v $GITLAB_HOME/data:/var/opt/gitlab \ # 挂载本地目录到容器数据目录
gitlab/gitlab-ce:latest # 使用的镜像:版本查看容器运行情况,出现gitlab运行信息表明启动成功
$ docker container ls
浏览器进入
http://192.168.8.21:8080
,使用root
账户登录并设置密码即可进入管理员界面
配置GitLab
可参考官方配置说明文档,本地配置文件在
$GITLAB_HOME/config/gitlab.rb
备份默认配置文件
$ cd /home/docker/gitlab/config |
修改与重载配置
修改配置文件
$ sudo vi /home/docker/gitlab/config
重载配置
在gitlab容器内重载
$ docker exec -t gitlab gitlab-ctl reconfigure
$ docker exec -t gitlab gitlab-ctl restart或直接重启容器
$ docker restart gitlab
常用配置选项
配置web请求地址
external_url 'http://192.168.8.21'
设置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
允许自定义头像,去掉注释
#
gitlab_rails['gravatar_plain_url'] = 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
由于设置了端口映射,设置如下选项使得网页端显示正常可用的ssh地址,如“ssh://git@192.168.8.21:2222/xxx/xxx.git”
gitlab_rails['gitlab_shell_ssh_port'] = 2222
在实验室内网环境下,关闭GitLab的CI/CD功能,详细见官方说明
gitlab_rails['gitlab_default_projects_features_builds'] = false
设置GitLab备份路径
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"配置邮箱服务,可以参考连接
添加SSL证书支持HTTPS,可以参考连接,由于使用自签名证书Chrome会拦截,所以没有弄
更新GitLab
拉取最新的GitLab-ce镜像,然后停止并删除当前的GitLab容器
$ docker stop gitlab
$ docker rm gitlab重启创建并启动GitLab容器,使用同样的配置和volume参数即可,GitLab会自动读取这些配置
$ docker run -d \
--hostname gitlab.example.com\
-p 8443:443 \
-p 8080:80 \
-p 2222:22 \
--name gitlab \
--restart always \
-v $GITLAB_HOME/config:/etc/gitlab \
-v $GITLAB_HOME/logs:/var/log/gitlab \
-v $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest