【超详细】Docker安装Gitlab持久化数据

Gitlab

1、Gitlab简介

定位

​ gitLab 是一个基于 Git 实现的在线代码仓库托管软件可以用 gitlab 自己搭建一个类似于 Github 一样的系统,一般用于在企业、学校等内部网络搭建 git 私服。 对于软件工程质量管理非常重要。

功能

​ 提供代码托管、提交审核和问题跟踪 可以很方便的管理权限、代码 review,创建、管理 project

版本

  • 社区版(CE)
  • 企业版(EE)

服务组件

  • Nginx:静态 web 服务器。
  • gitlab-shell:用于处理 Git 命令和修改 authorized keys 列表。(Ruby)
  • gitlab-workhorse: 轻量级的反向代理服务器。(go)
  • logrotate:日志文件管理工具。
  • postgresql:数据库。
  • redis:缓存数据库。
  • sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
  • unicorn:An HTTP server for Rack applications,GitLab Rails 应用是托管在这个服务器上面的。(Ruby Web Server, 主要使用 Ruby 编写)

2、Gitlab部署

此文章记录了以Docker形式部署Gitlab,并持久化数据,不以传统方式部署

1.拉取Docker镜像

  • 使用在线源
[root@bogon ~]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
  • 使用离线镜像导入
[root@bogon ~]# docker load -i gitlab-ce_docker.tar.gz

[root@bogon ~]# docker images
REPOSITORY        TAG          IMAGE ID            CREATED          SIZE
gitlab/gitlab-ce   12.10.0-ce.0    a77e641a81c1        2 years ago         2GB
  1. 创建数据持久化目录
[root@bogon ~]# mkdir /home/gitlab/config

[root@bogon ~]# mkdir /home/gitlab/logs

[root@bogon ~]# mkdir /home/gitlab/data
宿主机位置容器位置作用
/home/gitlab/config/etc/gitlab用于存储gitlab配置文件
/home/gitlab/logs/var/log/gitlab用于存储日志
/home/gitlab/data/var/opt/gitlab用于存储应用数据
  1. 创建gitlab_start.sh文件
[root@bogon ~]#  vim /home/gitlab/gitlab_start.sh
#!/bin/bash
sudo docker run --detach --hostname ip地址 --publish 443:443 --publish 80:80 --publish 9999:22 --name gitlab --restart=always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
# 参数说明:
--detach: 设置容器后台运行
--hostname: 设置容器的 hostname,如果是本地localhost ,否则使用外网ip
--publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,9999:主机的 ssh 访问端口 22:Docker 容器中 ssh 访问端口)
--name:容器名称
--restart always:每次启动容器就重启GitLab
--volume: 共享目录挂载,即 docker 容器内外数据共享
--e:配置 Gitlab 运行的环境变量

在该文件目录下,授予gitlab_start.sh执行权限

[root@bogon ~]# chmod +x gitlab_start.sh
[root@bogon ~]# ./gitlab_start.sh 		# 执行脚本

[root@bogon ~]#  docker ps -a
CONTAINER ID    IMAGE    COMMAND     CREATED      STATUS     PORTS        NAMES
70b9da8332b2   gitlab/gitlab-ce:latest   "/assets/wrapper"   4 seconds ago   Up 3 seconds (health: starting)   0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:10080->22/tcp, :::10080->22/tcp, 0.0.0.0:8088->80/tcp, :::8088->80/tcp   gitlab
  1. 修改gitlab配置
[root@bogon ~]#  vim /home/gitlab/config/gitlab.rb
gitlab_rails['gitlab_shell_ssh_port'] = 9999

# 配置外部访问地址
# 旧版本
external_url 'IP地址'
# 新版本
external_url 'http://ip地址'
[root@bogon ~]# docker stop gitlab && docker rm -f gitlab
gitlab
gitlab

[root@bogon ~]#  ./gitlab_start.sh
  1. 应用配置,重启服务

    在Gitlab容器运行状态时,重启服务,并远程访问网站测试

    # 进入到gitlab容器内
    [root@bogon ~]# docker exec -it gitlab bash
    # 重新应用gitlab的配置
    [root@bogon ~]# gitlab-ctl reconfigure
    # 重启gitlab服务
    gitlab-ctl restart
    # 查看gitlab运行状态
    gitlab-ctl status
    

    若访问Gitlab出现502等错误,使用命令检查语法错误原因

    gitlab-rake gitlab:check
    

    用户名密码

docker exec -it gitlab  /bin/bash   // gitlab是容器id

gitlab-rails console -e production   // 耐心等待

user=User.where(id:1).first // 第一个用户名,自动切换第一个用户

user.password='qworld123'// 修改密码  密码必须是八位

user.password_confirmation='qworld123'  // 确认密码

user.save!  // 保存修改

exit   // 最后依次输入退出容器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值