直接或Docker部署Gitlab要遇到的坑

一:直接部署:

    由网上查找到的部署经验开部署始(https://www.cnblogs.com/Alex-qiu/p/7845626.html):

  1. 前面几步都是准备工作,其中只有第三部安装Bundler Gem需要注意:执行安装前把下面跟换源的语句先执行。
  2. 由于以前在我的服务器上有使用过docker部署LNMP环境,所以mysql和redis都是docker 容器,直接造成了两个问题:
    1. mysql_docker连接宿主机gitlab:
      1. 使用已部署的phpmyadmin创建数据库gitlabhq_production备用。
        ***使用过程中发现服务器8080端口拒绝访问-->关闭firewall-->安装iptable–>打开端口8080–>再次尝试接入8080后发现:
      2. docker整个炸了:
        1. 不断地搜索和手动添加、编辑iptables和尝试docker设置依然不能复活旧docker:docker-compose up后Error:iptable fail的猩红大字总是那么顽强;
        2. 后来发现:docker对iptable已做兼容,前提是docker一定要在iptable安装后安装;
        3. 为了保持原有网站和项目的运行,只好选择屈辱的重装docker了,好在项目的部署一直使用的是docker-compose自动化部署,原有项目在重装docker前后并不受影响
    2. redis_docker连接主机gitlab
      1. iptable设置打开6379;
      2. 确保redis_docker服务无问题;
      3. 顺利进行部署经验直到:
        1. 配置redis连接:# sudo -u git -H cp config/resque.yml.example config/resque.yml

        2. 一开始并没有特别的注意这个配置,经过之后的mysql配置发现问题,config/resque.yml中的配置项:production: unix:/var/run/redis/redis.sock是什么鬼鬼鬼;

        3. 宿主机没有安装redis,而redis_docker并不支持(没有找到怎么支持)socket链接方法,宿主机安装gitlab就此遇到第一大坑,但是在为宿主机安装redis后该问题应该是可以解决的,如果没有遇到以下问题的话;

        4.  安装Gems:sudo -u git -H bundle install --deployment --without development test postgres aws,由于之前已经把源换为淘宝源,所以原以为安装可以很顺利,但事与愿违: redis不能连接,因为没有redis.sock!!需要重新配置config/resque.yml!!!!

    3. 虽然以上问题在宿主机上装一个redis使用其他端口,应该就可以解决问题,但是,作为后端,我们永远不向冗余低头!我们要干净简洁的服务器结构!于是,我们走上了使用docker镜像部署gitlab的不归路...

二:Docker部署:

好了,回到了遍地是坑的docker中:(https://blog.csdn.net/gzhouc/article/details/72716462):

  1. 已经部署了redis,所以这一步可以省略,不过有一个坑,稍后解决。
    ***如果没有redis:
    1. 拉取镜像:docker pull sameersbn/redis:latest
    2. 启动容器:docker run --name=redis -d sameersbn/redis:latest
  2. gitlab的docker默认使用postgresql数据库,所以我们:
    1. 拉取镜像:docker pull sameersbn/postgresql:latest
    2. 为数据库默认的表空间建立目录以存放数据mkdir -p /home/git/gitlab_docker/postgresql/data
    3. 更改权限:sudo chcon -Rt svirt_sandbox_file_t  /home/git/gitlab_docker/postgresql/data
    4. 启动容器:docker run --name=postgresql -d -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' -v '/home/git/gitlab_docker/postgresql/data:/var/lib/postgresql' sameersbn/postgresql
  3. 部署gitlab,注意了,一大波坑即将袭来:
    1. 拉取镜像:docker pull sameersbn/gitlab
    2. 建立目录以存放数据mkdir -p /home/git/gitlab_docker/gitlab/data
                                          mkdir -p /home/git/gitlab_docker/gitlab/backups
    3. 启动容器:docker run --name='gitlab' -d --link docker_redis_1:redisio -v /home/gitlab_docker/gitlab/data:/home/git/data -p 10022:22 -p 10080:80 -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' -e 'DB_HOST=127.0.0.1' -e 'DB_USER=gitlab' -e 'DB_PASS=password' -e '[email protected]' -e 'GITLAB_BACKUPS=weekly' -e 'GITLAB_HOST=120.78.137.250' -e 'GITLAB_SIGNUP=true' -e 'GITLAB_GRAVATAR_ENABLED=false' --net docker_default sameersbn/gitlab
      1. 第一个坑:数据库连接失败,但是不会报错,只能反复的检查DB_HOST和DB_PORT两个参数是否配置正确。
        解决办法:没有特别好的解决办法,等一会儿之后发现依然是这个状态就需要停掉容器,删除容器并重新配置启动一个新容器。

      2. 第二个坑:redis挂载出错,使用参数--link docker_redis_1:redisio 并没有办法使用已存在的redis。
        解决办法:去掉--link docker_redis_1:redisio,使用-e 'REDIS_HOST='以及-e ‘REDIS_PORT=’老老实实的配置redis实际服务。

      3. 第三个坑:系列坑,一些没有默认配置的key生成方式需要在gitlab运行之初就配置好:
        解决办法:配置一下多个参数 ‘GITLAB_SECRETS_DB_KEY_BASE’,‘GITLAB_SECRETS_SECRET_KEY_BASE’,‘GITLAB_SECRETS_OTP_KEY_BASE’。
      4. 最后我们的gitlab运行命令是这个样子的:
        docker run --name='gitlab' -d -v /home/git/gitlab_docker/data:/home/git/data -v /home/git/gitlab_docker/log:/var/log/gitlab -p 10022:22 -p 10080:80 -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' -e 'DB_TYPE=postgres' -e 'DB_HOST=172.20.0.2' -e 'DB_PORT=5432' -e 'DB_USER=gitlab' -e 'DB_PASS=password' -e 'REDIS_HOST=172.20.0.5' -e '[email protected]' -e 'GITLAB_BACKUPS=weekly' -e 'GITLAB_HOST=120.78.137.250' -e 'GITLAB_SIGNUP=true' -e 'GITLAB_GRAVATAR_ENABLED=false' -e 'GITLAB_SECRETS_DB_KEY_BASE=pwgen -Bsv1 64' -e 'GITLAB_SECRETS_SECRET_KEY_BASE=pwgen -Bsv1 64' -e 'GITLAB_SECRETS_OTP_KEY_BASE=pwgen -Bsv1 64' --net docker_default sameersbn/gitlab

三:结尾:

终于,在看到这个镜头的时候,我们差不多进入黎明前的黑暗了:

过一会去我们配置好的120.78.137.250:10080看一下,就可以确认是否搭建成功了。

 ***后记:gitlab需要四核CPU,4G内存才可以流畅运行,经试验,单核加1G加2GB虚拟SWAP,让整个阿里云ECS趋于崩溃,卡顿非常严重!

你可能感兴趣的:(部署搭建)