使用 docker 安装 gitlab

Gitlab 作为开源的 git 代码仓库,功能强大,使用起来非常方便。本文讲述如何使用 docker 来安装 gitlab。

本文假定已安装好 docker,可以输入 docker --version 来验证是否已正常安装,输出:

Docker version 19.03.5, build 633a0ea

使用 docker run 命令安装

为方便安装,我们先拉取最新版本的 gitlab 社区版本镜像:

1
docker pull gitlab/gitlab-ce:latest

然后,使用 docker run 运行 gitlab:

1
2
3
4
5
6
7
8
9
docker run --detach \
--hostname 127.0.0.1 \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /Users/lihao/code/docker/gitlab-ce/config:/etc/gitlab \
--volume /Users/lihao/code/docker/gitlab-ce/logs:/var/log/gitlab \
--volume /Users/lihao/code/docker/gitlab-ce/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

docker run 命令使用了多个参数,这些参数的作用如下:

  • --detach:后台运行容器
  • --publish:端口映射,容器端口如何映射到宿主机(本文指我们的 Mac 电脑)端口
  • --name:指定容器的名称,这里我们指定容器名称为 gitlab
  • --restart always:设置当宿主机重启后,容器也会重启
  • --volume:这里使用 bind mount 的方式,设置 gitlab 容器的数据保存在目录 /Users/lihao/code/docker/gitlab-ce/

有关 docker volume 的使用,可以参考文章 《Docker 数据持久化》

Gitlab 容器使用 bind mount 方式以持久化的数据如下表:

本地目录 容器目录 用途
/Users/lihao/code/docker/gitlab-ce/config /etc/gitlab 保存 gitlab 配置
/Users/lihao/code/docker/gitlab-ce/logs /var/log/gitlab 保存 gitlab 输出日志
/Users/lihao/code/docker/gitlab-ce/data /var/opt/gitlab 保存 gitlab 应用数据

执行上面的 docker run 命令后,我们再转回到本地的目录 /Users/lihao/code/docker/gitlab-ce/config,打开文件 gitlab.rb ,并修改 external_urlhttp://127.0.0.1 ,以便于可以使用地址 http://127.0.0.1 访问 gitlab。

然后,再执行命令重启 gitlab。

1
docker restart gitlab

启动 gitlab 容器过程中,可以使用命令来查看启动过程的日志输出。

1
docker logs -f gitlab

打开浏览器,输入地址 http://127.0.0.1/,更新密码,并使用 root 用户名登录,可以看到 gitlab 已可以正常访问。

使用 docker-compose 安装

使用 docker-compose 可以更方便配置、安装 gitlab。安装 gitlab 的 docker-compose.yml 文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: '127.0.0.1'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://127.0.0.1'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/Users/lihao/code/docker/gitlab-compose/config:/etc/gitlab'
- '/Users/lihao/code/docker/gitlab-compose/logs:/var/log/gitlab'
- '/Users/lihao/code/docker/gitlab-compose/data:/var/opt/gitlab'

可以看到,docker-compose.yml 文件的参数与上述 docker run 命令的参数相似。为了方便配置 gitlab 的 external_url 配置,我们通过直接指定环境变量 GITLAB_OMNIBUS_CONFIG 的方式实现。

另外,为了与上面安装的 gitlab 数据不冲突,我们使用了本地另一个目录来保存容器的数据。

关闭上面启动的 gitlab 容器,然后在 docker-compose.yml 文件所在目录,执行以下命令:

1
docker-compose up -d

等待执行一段时间以后(笔者在安装 gitlab 过程中,发现执行命令后马上访问 gitlab 会报 502 错误,等待一段时间又好了),打开浏览器,输入地址,同时可以正常访问 gitlab。

参考资料