使用docker构建Gitlab

gitlab功能比较庞大,所占用资源也不少,建议放在资源好一点的服务器,虚拟机运行4GB+,遇到问题可直接看最后面,可能会有所帮助html

特性

  • 使用docker-compose构建
  • 使用docker的方式进行构建,基于gitlab-ce社区版搭建(可根据须要获取ee版)
  • 使用nginx作一层反向代理,最终经过一个二级域名的方式可直达gitlab

最终的目的是使用二级域名,直接映射过去linux

# 本地资源
192.168.204.138 -> 服务器
二级域名 gitlab.vm.com -> 192.168.204.138 (此处是本机作了个hosts)

# 映射关系
服务器中:7080 -> gitlab-docker:80
服务器中:7443 -> gitlab-docker:443 (后面没有使用)
服务器中:7022 -> gitlab-docker:22 (用于ssh连方式)

# 访问关系
192.168.204.138:7080 -> gitlab-docker
gitlab.vm.com:7080 -> gitlab-docker

# 最终使用nginx作一层反向代理
gitlab.vm.com -> gitlab-docker
复制代码

安装docker

curl https://get.docker.com/ > install-docker.sh # 下载安装脚本

sh install-docker.sh # 执行安装脚本

# 修改docker阿里源(此处是个人docker源,能够去阿里云免费获取本身专属的加速器源)
vim /etc/docker/daemon.json

# daemon.json
{
  "registry-mirrors": ["https://brnzp166.mirror.aliyuncs.com"]
}
复制代码

设置开机自启动systemctl enable dockernginx

安装docker-compose(基于国内镜像)

# 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 赋予权限
chmod +x /usr/local/bin/docker-compose
复制代码

设置外部目录

因为是docker镜像运行, 因此咱们须要把gitlab的配置, 数据, 日志存到容器外面, 即将其挂载到宿主机。git

mkdir -p /home/software/gitlab/etc
mkdir -p /home/software/gitlab/logs
mkdir -p /home/software/gitlab/data
复制代码

制做docker-compose.yml文件

因为使用了docker-compose帮助咱们部署,因此不须要进行拉取镜像等,他会自动帮咱们执行docker

找一个目录存放docker-compose.yml文件,这里使用/home/software/gitlab目录shell

  1. 新建文件
cd /home/software/gitlab

vim docker-compose.yml
复制代码
  1. 编辑docker-compose.yml文件内容,若有要求可自行修改对应目录
# docker-compose.yml

gitlab:
  image: 'gitlab/gitlab-ce:latest'
  restart: unless-stopped
  hostname: 'gitlab.vm.com' # 最终暴露出去的host
  environment:
    GITLAB_OMNIBUS_CONFIG: |

      # 外部能够访问到gitlab的url
      external_url 'http://gitlab.vm.com' 
      
      # ssh相关(注意可能会和ssh链接工具端口冲突)
      gitlab_rails['gitlab_ssh_host'] = 'gitlab.vm.com'
      gitlab_rails['gitlab_shell_ssh_port'] = 7022

      # email相关
      gitlab_rails['smtp_enable'] = true
      gitlab_rails['smtp_address'] = "smtp.163.com" # smtp服务器地址
      gitlab_rails['smtp_port'] = 465
      gitlab_rails['smtp_user_name'] = "123456@163.com" # 发送邮件的邮箱
      gitlab_rails['smtp_password'] = "受权码"     # 邮箱的受权码
      gitlab_rails['smtp_domain'] = "smtp.163.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = true 
      gitlab_rails['gitlab_email_from'] = '123456@163.com' # 发送邮件的邮箱
  ports:
    - '7080:80'
    - '7443:443'
    - '7022:22'
  volumes:
    - '/home/software/gitlab/etc:/etc/gitlab'
    - '/home/software/gitlab/logs:/var/log/gitlab'
    - '/home/software/gitlab/data:/var/opt/gitlab'
复制代码

检测配置成功

运行docekr

切换到刚刚的docker-compose.yml文件存在的地址(此时是在/home/software/gitlab)json

cd /home/software/gitlab

# 后台运行docker
docker-compose up -d
复制代码

使用docker ps查看当前docker的运行情况,等待gitlab的状态为(healthy/unhealthy,约5分钟左右),也即打包完毕后,访问192.168.204.138:7080,若是能够看到欢迎界面,恭喜你,搭建就成功了vim

之后直接切换去docker-compose.yml文件存在的地址,使用docker-compose up -d便可重启,而且上文设置了docker开机自启。centos

此时设置的密码为root帐户,即之后用户名为root的帐户,超级管理员浏览器

可点击头像框 settings -> preferences -> language 切换为中文

测试邮箱服务

修改完成后,进入到另外一个终端中,进入gitlab-docker内

# 获取到gitlab服务的containerID
docker ps

# 进入docker容器内
docker exec -it <containerID> /bin/bash

# 测试邮箱是否完成
gitlab-rails console     # 进入邮件控制台, 稍等一会才能进入
Notify.test_email('test_another@qq.com', 'Message Subject', 'Message Body').deliver_now
复制代码

使用nginx反向代理

反向代理说通俗就是,你去访问192.168.204.138的时候,服务器趁你不知道安排了192.168.204.138:7080给你服务,此时是后台服务器,经过一个中间商,给你服务。

使用yum安装nginx

# 下载对应当前系统版本的nginx包(package)
wget  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm  

# 创建nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm  

# 根据/etc/yum.repos.d/nginx.repo中的信息下载安装nginx
yum install nginx   

# 启动nginx服务
systemctl start nginx 

# 开机自启nginx服务
systemctl enable nginx 
复制代码

配置反向代理

使用此种方式安装的nginx,配置文件是较为分散的,能够使用whereis nginx查看

# 进入到nginx配置目录
cd /etc/nginx/conf.d

# 增长一个针对gitlab的proxy, 必定要为*.conf, 查看 /etc/nginx/nginx.conf 就懂了
vim proxy_gitlab.conf

# 个人反向代理,gitlab.vm.com:80 -> http:127.0.0.1:7080
# 即docker映射出的gitlab 目录
server {
  listen 80;
  server_name gitlab.vm.com;

  location / {
    proxy_pass http://127.0.0.1:7080;
  }
}
复制代码

重启nginx服务systemctl restart nginx

访问便可http://gitlab.vm.com

可能出现的问题

SELINUX(针对反向代理)

linux安全模块,此处直接关闭(不推荐这种作法,能够去找selinux较好的解决方案)

vim /etc/sysconfig/selinux

SELINUX=disabled
复制代码

firewalld

因为防火墙的存在,可能形成浏览器一直转圈的情况

本地虚拟机,直接关闭(不推荐,能够去找firewalld较好的解决方案)

systemctl stop firewalld   # 关闭防火墙

systemctl disable firewalld   # 永久关闭(固然也不推荐啦)
复制代码

gitlab-docker无限重启

多是配置出了问题,以前配置extends_url出现这种情况,因此此时并未在进行过配置

能够切换进去(此处gitlab-docker的name就叫gitlab,也能够替换为<containerID>docker ps -a便可查看),查看哪里出了问题

docker container logs gitlab
复制代码

nginx服务器启动异常

nginx服务启动说权限的问题,此处多是修改了SELINUX致使的问题,能够先将selinux切换回以前的模式,重启后,待nginx可正常启动后,重启在修改SELINUX便可

爆内存

由于gitlab对设备的仍是有必定要求的gitlab硬件要求

若是卡慢的话,能够试一试增长虚拟内存

# 4GB虚拟内存
dd if=/dev/zero of=/home/swap bs=1024 count=4194304

# 格式化分区
mkswap /home/swap

# 开启swap分区(关闭swap分区 swapoff /home/swap)
swapon /home/swap

# 挂载分区
vim /etc/fstab

/home/swap swap swap default 0 0
复制代码

参考

docker方式构建gitlab(官方文档)

云服务器增长swap分区

相关文章
相关标签/搜索