zoukankan      html  css  js  c++  java
  • docker gitlab升级到14.4.2

    一、概述

    目前gitlab版本是13.3.5,使用docker部署。近期阿里云发出警告,有恶意代码执行,今查询,是gitlab漏洞导致,需要升级到最新版本。

    目前已知的最新版本是14.4.2

    二、升级策略

    参考官方文档:https://docs.gitlab.com/ee/update/#installation-using-docker

    13版本升级路径为:13.0.14-> 13.1.11-> 13.8.8-> 13.12.15->最新14.0.Z->最新14.1.Z->最新14.Y.Z

    由于我的版本为13.3.5,因此升级路径为: 13.8.8-> 13.12.15->最新14.0.Z->最新14.1.Z->最新14.Y.Z

    dockerhub官方链接: https://registry.hub.docker.com/r/gitlab/gitlab-ce

    先下载所需要的镜像

    docker pull gitlab/gitlab-ce:13.8.8-ce.0
    docker pull gitlab/gitlab-ce:13.12.15-ce.0
    docker pull gitlab/gitlab-ce:14.0.12-ce.0
    docker pull gitlab/gitlab-ce:14.1.8-ce.0
    docker pull gitlab/gitlab-ce:14.2.6-ce.0
    docker pull gitlab/gitlab-ce:14.3.4-ce.0
    docker pull gitlab/gitlab-ce:14.4.2-ce.0

    三、备份

    当前的docker启动命令为:

    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:13.3.5-ce.0

    先停止gitlab,再拷贝目录

    docker stop gitlab-ce
    cp -rp /data/gitlab /data/gitlab.bak

    三、正式升级

    升级到13.8.8

    先删除gitlab,再启动,注意,使用镜像版本为13.8.8

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:13.8.8-ce.0

    查看gitlab docker日志

    docker logs -f gitlab-ce

    等待10分钟左右,当出现

    ...
    ==> /var/log/gitlab/nginx/gitlab_access.log <==
    127.0.0.1 - - [21/Nov/2021:06:03:15 +0000] "GET /help HTTP/1.1" 200 68265 "" "curl/7.74.0-DEV" -
    ...

    表示gitlab已经完全启动好了

    登录gitlab,点击帮助,查看gitlab版本

    升级到13.12.15

    注意:必须先修改配置文件,否则启动时,会报错,提示没有配置完整的域名。
    修改/data/gitlab/config/gitlab.rb文件,内容如下:

    external_url = 'gitlab.aliyun.com'

    注意:这里有一个等号,老版本是没有等号的。

    先删除gitlab,再启动,注意,使用镜像版本为13.12.15

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:13.12.15-ce.0

    接下来就是查看日志,等待10分钟,步骤同上!

    查看gitlab版本

    升级到14.0.12

    注意:需要先修改配置文件,否则直接启动会报错:

    * unicorn['worker_processes'] has been deprecated since 13.10 and was removed in 14.0. Starting with GitLab 14.0, Unicorn is no longer supported and users must switch to Puma, following https://docs.gitlab.com/ee/administration/operations/puma.html.

    修改/data/gitlab/config/gitlab.rb文件,将这行注释掉

    unicorn['worker_processes'] = 2

    新增2行配置

    puma['worker_timeout'] = 60
    puma['worker_processes'] = 2

    先删除gitlab,再启动,注意,使用镜像版本为14.0.12-ce.0

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:14.0.12-ce.0

    等待10分钟,查看版本

    升级到14.1.8

    注意:14版本不能一步到位,必须要14.0.x-->14.1.x-->14.2.x-->14.3.x,以此类推,否则会导致数据迁移失败。

    先删除gitlab,再启动,注意,使用镜像版本为14.1.8

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:14.1.8-ce.0

    等待10分钟,查看版本

    升级到14.2.6

    注意:升级到14.2.x,需要执行2个命令:

    先进入gitlab容器

    docker exec -it gitlab-ce /bin/bash

    执行以下命令:

    gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,push_event_payloads,event_id,'[["event_id"]\, ["event_id_convert_to_bigint"]]']
    
    gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]']

    先删除gitlab,再启动,注意,使用镜像版本为14.2.6

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:14.2.6-ce.0

    等待10分钟,查看版本

    升级到14.3.4

    先删除gitlab,再启动,注意,使用镜像版本为14.3.4

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:14.3.4-ce.0

    等待10分钟,查看版本

    升级到14.4.2

    先删除gitlab,再启动,注意,使用镜像版本为14.4.2

    docker stop gitlab-ce
    
    docker run -d \
     --restart=always \
     --name=gitlab-ce \
     -p 8443:443 \
     -p 8090:80 \
     -p 8022:22 \
     -v /data/gitlab/config:/etc/gitlab \
     -v /data/gitlab/logs:/var/log/gitlab \
     -v /data/gitlab/data:/var/opt/gitlab \
     -v /data/gitlab/ssl:/etc/gitlab/ssl \
     gitlab/gitlab-ce:14.4.2-ce.0

    等待10分钟,查看版本

    四、修改项目clone地址

    进入docker里面,修改文件

    vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

    修改Host字段

    production: &base
      #
      # 1. GitLab app settings
      # ==========================
    
      ## GitLab settings
      gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: aliyun.baidu.com

    重启gitlab

    gitlab-ctl restart

    刷新页面,再次查看项目clone地址,就正确了。

  • 相关阅读:
    Linux安全加固--精简启动项
    Linux安全加固--系统相关
    Nginx多域名负载均衡配置
    linux系统安全加固--账号相关
    ssh免密登录linux服务器
    Java入门【02】基本程序设计结构01
    Java入门【01】运行Java程序
    新的开始
    九宫重排
    格子刷油漆
  • 原文地址:https://www.cnblogs.com/xiao987334176/p/15584309.html
Copyright © 2011-2022 走看看