Gitlab 作为开源的 git 代码仓库,功能强大,使用起来非常方便。本文讲述如何使用 docker 来安装 gitlab。
本文假定已安装好 docker,可以输入 docker --version
来验证是否已正常安装,输出:
Docker version 19.03.5, build 633a0ea
使用 docker run 命令安装
为方便安装,我们先拉取最新版本的 gitlab 社区版本镜像:
docker pull gitlab/gitlab-ce:latest
然后,使用 docker run
运行 gitlab:
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_url
为 http://127.0.0.1
,以便于可以使用地址 http://127.0.0.1
访问 gitlab。
然后,再执行命令重启 gitlab。
docker restart gitlab
启动 gitlab 容器过程中,可以使用命令来查看启动过程的日志输出。
docker logs -f gitlab
打开浏览器,输入地址 http://127.0.0.1/
,更新密码,并使用 root 用户名登录,可以看到 gitlab 已可以正常访问。
使用 docker-compose 安装
使用 docker-compose 可以更方便配置、安装 gitlab。安装 gitlab 的 docker-compose.yml
文件如下:
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
文件所在目录,执行以下命令:
docker-compose up -d
等待执行一段时间以后(笔者在安装 gitlab 过程中,发现执行命令后马上访问 gitlab 会报 502 错误,等待一段时间又好了),打开浏览器,输入地址,同时可以正常访问 gitlab。
参考资料
- https://docs.gitlab.com/omnibus/docker/