使用Docker Compose方式安装Gitlab服务

GitLabopen in new window是一个开源的Git服务软件,在开发中使用广泛。它有很丰富的功能(Git 版本管理、文件浏览、WIKI、Code Review、Issue 管理、Code Snippets、Web Hooks、CI、CD等)。

使用Docker的方式来安装服务端软件是挺方便的。但是GitLab需要三个服务:GitlabPostgreSQL数据库和Redis缓存。

如果用命令行直接运行容器,需要三条命令,还要指定很多的配置项。

这里借助docker-composeopen in new window工具来一次运行多个容器。前期配置好相关的容器编排参数,只需要简单的命令行就可以完成GitLab服务的安装和启动。

根据官方提示,服务器的配置之少是:2Core-CPU 4GB-RAM,并安装了dockeropen in new windowdocker-composeopen in new window

镜像

  • 源代码仓库: https://github.com/sameersbn/docker-gitlab

包含三个镜像:redisopen in new window, postgresqlopen in new window, gitlabopen in new window

Docker Compose Yam File

上面的三个镜像, 如果直接用Docker命令来运行的话,会需要三条命令。并且还要指定很多的参数来指定一些选项的值,比如数据库的用户名或密码。Docker提供了更方便的解决方案:Docker Compose,用一条命令就可以跑起多个容器,最适合这种运行多个容器共同组成一个服务的情景。

Docker Compose接受一个docker-compose.yml 文件作为配置输入。yml文件指定了多个容器怎么启动,彼此之间怎么连接。下面是sameersbn/gitlabopen in new window这个镜像所提供的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/

修改后的完整代码可以参考这里open in new window

主要修改如下文件内容

- /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

启动GitLab

修改完 docker-compose.yml,接下来可以利用如下命令来启动 GitLab 了。

如果当前网速拉取国外站点镜像缓慢,建议启动之前可以参考这里open in new window修改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位数以上

相关命令

启动GitLab

docker-compose up

停止 GitLab

docker-compose stop

备份 GitLab

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 目录中。 更多备份和还原相关操作参见文档open in new window

参考链接