Docker部署gitlab,数据库分离部署

记录一下Docker部署gitlab遇到的问题

  • 前言
        • 先确认旧版本的gitlab版本
        • 这里有三种方式查看旧版本的gitlab版本
        • 第一种就是通过内部文件方式查询(进入容器内)
        • 第二种就是通过命令行方式(进入容器内)
        • 第三种方式就是直接网页查看当前版本信息
        • 安装gitlab(直接安装)
        • 安装gitlab(通过镜像复制安装)
        • 开始安装postgresql
        • 如果数据库配置出错了,怎么办?
        • 数据库数据导入

前言

最近一个任务,要将两年前的gitlab给重新备份一遍到新的服务器上,然后原本的gitlab使用的是内部已经集成好的postgresql。然后现在要将数据库分离,将新的gitlab数据库分离出去。

先确认旧版本的gitlab版本

这里有三种方式查看旧版本的gitlab版本

第一种就是通过内部文件方式查询(进入容器内)

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

第二种就是通过命令行方式(进入容器内)

gitlab-rake gitlab:env:info

第三种方式就是直接网页查看当前版本信息

Docker部署gitlab,数据库分离部署_第1张图片

安装gitlab(直接安装)

将gitlab重新部署到新的服务器上
这里有两种方式部署,第一种就是直接重新拉一个gitlab,因为之前已经确认过了版本号,所以直接进行拉取,我这里因为版本是12.3.5的ce版本

docker pull gitlab/gitlab-ce:12.3.5-ce.0

拉取完成后,写挂载目录(之后会用到)

 mkdir -p /mnt/gitlab/etc
 mkdir -p /mnt/gitlab/log
 mkdir -p /mnt/gitlab/data
 mkdir -p /mnt/gitlab/postgresql

然后启动容器

docker run -idt -p 80:80 --name gitlab --restart=always -v /mnt/gitlab/etc/:/etc/gitlab -v /mnt/gitlab/log/:/var/log/gitlab -v /mnt/gitlab/data/:/var/opt/gitlab gitlab/gitlab-ce:12.3.5-ce.0

输入命令,查看是否启动完成

docker ps -a | grep "gitlab"

可以看到已经在启动中了,等他启动完成后,继续配置外部数据库
gitlab启动中

安装gitlab(通过镜像复制安装)

回到旧服务器,查询当前gitlab镜像,将镜像导出
Docker部署gitlab,数据库分离部署_第2张图片

docker save -o gitlab.tar sameersbn/gitlab:latest

通过scp将生产的tar文件传到新的服务器中,输入yes输入密码

scp gitlab.tar [email protected]:/mnt/gitlab/dokcerload

回到目标服务器中将收到的tar文件load出来

docker load -i gitlab.tar

然后安装步骤就和上面一样了

开始安装postgresql

这里有一点很关键,安装的postgre一定要符合官方文档里当前gitlab支持的最小版本!(之前安装了一个最新的gitlab,结果10.4的postgre无法挂载)
拉取postgre10.4

docker pull postgres:10.4

开始安装

docker run --name postgres -e POSTGRES_PASSWORD=test123 -p 25432:5432 -v /mnt/gitlab/postgresql/10/main:/var/lib/postgresql -d postgres:10.4

如果安装了,输入命令docker ps 找不到postgres,那就先看下日志是不是安装失败了

docker logs -f postgres 

这里我顺利安装成功后,开始配置gitlab数据库,
先进入容器

docker exec -it gitlab /bin/bash

然后编辑配置文件

vi /etc/gitlab/gitlab.rb

将默认数据库关闭
Docker部署gitlab,数据库分离部署_第3张图片
配置外部数据库连接信息
Docker部署gitlab,数据库分离部署_第4张图片
然后保存并退出,重启配置文件,并重启项目,退出容器

gitlab-ctl reconfigure
gitlab-ctl restart
exit

登陆刚刚部署的服务器,查看是否可以运行
Docker部署gitlab,数据库分离部署_第5张图片

如果数据库配置出错了,怎么办?

你在配置gitlab外部数据库的时候可能会报错
说没有[gitlabhq_production]数据库,这个时候可以直接手动创建。

数据库数据导入

先查询原服务器上gitlab的挂载信息

docker inspect gitlab-new

找到目标数据库的位置

目前没有什么很好的办法,因为现在数据库版本是一致的,我直接将就服务器上挂载的数据库直接复制覆盖了新起的数据库。

你可能感兴趣的:(Docker,linux,docker,gitlab)