通过 Docker 快速部署和配置公司内部 GitLab

步骤

  1. 安装 docker 环境
  2. 拉取 gitlab 镜像
  3. 启动 gitlab 容器
  4. 配置仓库克隆地址
  5. 关闭公开注册
  6. 配置邮件

安装 Docker 环境

通过 Docker 可以快速拉取和运行已经构建好的开箱即用的 GitLab 镜像,在公司内部服务器安装 Docker 环境。

拉取 GitLab 镜像

docker pull gitlab/gitlab-ce

启动 GitLab 容器

为了保证容器内的状态数据不会丢失,需要将配置、日志和数据目录挂载到宿主机;并将容器内的服务端口绑定到宿主机端口,这些容器内的端口包括 HTTP 端口(80)、HTTPS 端口(443)和 SSH 端口(22),执行以下命令启动容器、绑定端口并挂载目录到宿主机(根据自己的需要修改命令中的容器名称、宿主机端口和宿主机路径,但后文中若涉及到宿主机的相关接口,均使用命令中的宿主机端口)。

docker run -d \
--name gitlab \
-p 9443:443 -p 9080:80 -p 9022:22 \
-v /path/to/conf:/etc/gitlab \
-v /path/to/logs:/var/log/gitlab \
-v /path/to/data:/var/opt/gitlab \
gitlab/gitlab-ce

通过 docker ps 命令可以看到刚刚启动的容器处于 starting 状态,等待它的初始化过程,直到 status 变为 healthy
使用浏览器访问宿主机 9080 端口,打开 GitLab 后台,设置 root (管理员)密码。然后通过 username: rootpassword: 刚刚设定的密码 来进行管理员的登录。之后创建一个项目,会发现项目的克隆地址中的 hostname 部分都是容器的 hostname,通过这个地址在宿主机进行 git clone 显然是克隆不到的。我们需要的是通过宿主机(服务器)的地址来进行 Git 操作,我们的开发人员电脑和这台部署 Docker 的服务器是在同一个内部网段下,这样他们才能操作 Git 仓库。

配置仓库的克隆地址

所以,我们需要修改 GitLab 后台中所显示的克隆地址,注意,我们要修改的仅仅是 web 视图中所显示的克隆地址和端口,便于以后开发人员复制到可用的仓库地址,我们要修改的并不是容器内真正的服务端口。

修改显示的 HTTP 克隆地址

修改 HTTP 克隆地址比较简单,直接通过管理员身份在 Admin Area (点击后台上方的扳手符号进入)便可以操作,Settings -> Genenal -> Visibility and access controls -> Custom Git clone URL for HTTP(S),输入挂载到宿主机的 HTTP 地址(如,若宿主机内网 IP 为 192.168.0.200,则设置为 http://192.168.0.200:9080),点击 Save changes 进行保存,之后再进入项目,HTTP 方式的克隆地址便会生效成宿主机地址(已存在项目可能会存在延迟,这个时候可以新建一个项目测试一下)。
当然,在输入地址时,也可以输入 https 地址,前提是需要在容器中配置 https 证书,这里不展开描述。

修改显示的 SSH 克隆地址

修改 SSH 克隆地址需要修改容器内的配置文件:

docker exec -it gitlab /bin/bash

vi /etc/gitlab/gitlab.rb

搜索文件中的 gitlab_rails['gitlab_ssh_host']gitlab_rails['gitlab_shell_ssh_port']字符位置,去掉注释,将配置修改成:

gitlab_rails['gitlab_ssh_host'] = '192.168.0.200'
gitlab_rails['gitlab_shell_ssh_port'] = 9022

保存退出,执行:

gitlab-ctl reconfigure # 让配置生效

之后再进入项目,发现显示的 SSH 克隆地址也变为了宿主机的地址了。
配置完成,在内网任何一台电脑上进行两个地址的克隆测试。使用 SSH 地址克隆,需要先添加客户端电脑 ssh 公钥;使用 HTTP 方式克隆需要输入已注册的 GitLab 用户名和密码。

关闭公开注册

关闭后台登录界面的注册入口,禁止人员在内网登录后台进行自行注册用户,只能管理员手动进行新用户的注册。
管理员登录后台,Admin Area -> Settings -> Genenal -> Sign-up restrictions -> Sign-up enabled,去除勾选,保存。

配置邮件

// todo

你可能感兴趣的