GitLab是一个开源的Git服务软件,在开发中使用广泛。它有很丰富的功能(Git 版本管理、文件浏览、WIKI、Code Review、Issue 管理、Code Snippets、Web Hooks、CI、CD等)。
使用Docker的方式来安装服务端软件是挺方便的。但是GitLab需要三个服务:Gitlab
,PostgreSQL
数据库和Redis
缓存。
如果用命令行直接运行容器,需要三条命令,还要指定很多的配置项。
这里借助docker-compose工具来一次运行多个容器。前期配置好相关的容器编排参数,只需要简单的命令行就可以完成GitLab服务的安装和启动。
根据官方提示,服务器的配置之少是:2Core-CPU 4GB-RAM,并安装了docker和docker-compose
包含三个镜像:redis, postgresql, gitlab
上面的三个镜像, 如果直接用Docker命令来运行的话,会需要三条命令。并且还要指定很多的参数来指定一些选项的值,比如数据库的用户名或密码。Docker提供了更方便的解决方案:Docker Compose,用一条命令就可以跑起多个容器,最适合这种运行多个容器共同组成一个服务的情景。
Docker Compose接受一个docker-compose.yml
文件作为配置输入。yml文件指定了多个容器怎么启动,彼此之间怎么连接。下面是sameersbn/gitlab这个镜像所提供的Yml文件(https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml)
.
# 执行下面的命令将文件下载
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
下载完成之后,在文件中,我们可以看到 GitLab 的很多配置都已经参数化了,包数据卷的配置、服务的端口、备份时机和邮件配置等。
# 或者执行下面的命令将已经改好的文件下载
wget -O docker-compose.yml https://gist.githubusercontent.com/curder/0b8a10a827a4f6236bccfddb0d8d5c46/raw/787cb4160caf73993a1d76b8d159c9024a5e3002/gitlab-docker-compose.yml
在MacOS上,使用/Users/Shared
而不是/srv
,所以我将其下载下来并将文件内容进行了适当的修改,主要是针对volumn
相关的映射路径存储至如下路径。
/Users/Shared/gitlab/
修改后的完整代码可以参考这里。
主要修改如下文件内容
- /Users/Shared/gitlab/redis:/var/lib/redis:Z
- /Users/Shared/gitlab/postgresql:/var/lib/postgresql:Z
- /Users/Shared/gitlab/gitlab:/home/git/data:Z
- TZ=Asia/Shanghai
- GITLAB_TIMEZONE=Beijing
修改完 docker-compose.yml
,接下来可以利用如下命令来启动 GitLab 了。
如果当前网速拉取国外站点镜像缓慢,建议启动之前可以参考这里修改docker镜像加速器。
docker-compose up -d
上面的这行命令,首先会下载相关的镜像,然后依次创建并启动容器。如下图所示:
➜ gitlab-docker docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------
gitlab-docker_gitlab_1 /sbin/entrypoint.sh app:start Up 0.0.0.0:10022->22/tcp, 443/tcp, 0.0.0.0:10080->80/tcp
gitlab-docker_postgresql_1 /sbin/entrypoint.sh Up 5432/tcp
gitlab-docker_redis_1 /sbin/entrypoint.sh --logl ... Up 6379/tcp
当启动完成之后,我们就可以在浏览器中输入http://localhost:10080
,如果暂时能够访问却不能正确打开,那么说明 GitLab 创建还未启动成功。如下图所示:
第一次成功进入gitlab需要输入root的初始密码,密码需要保持在8位数以上。
docker-compose up
docker-compose stop
docker-compose run gitlab app:rake gitlab:backup:create
docker-compose run --rm gitlab app:rake gitlab:backup:restore BACKUP=1529921023_2018_06_25_11.0.0
在上面的命令中,
1529921023_2018_06_25_11.0.0
为备份文件的时间戳前缀,该文件位于 gitlab 的backups
目录中。 更多备份和还原相关操作参见文档。