当前环境

  • 服务器A
  • 服务器B
  • ubuntu
  • docker
  • gitlab(版本一致)

docker安装gitlab

由于考虑到gitlab 包含了⾃身的nginx、数据库、端⼝占⽤等等因数,这⾥使⽤的是docker安装; 如何安装docker? 这里暂不概述

拉取gitlab image

# gitlab-ce为稳定版本,后⾯不填写版本则默认pull最新latest版本
docker pull gitlab/gitlab-ce

启动gitlab

sudo docker run --detach \    
--hostname www.example.com \
   --publish 8091:80 --publish 8022:22 \
   --name gitlab \
   --restart always \
   --volume /mnt/gitlab/config:/etc/gitlab \
   --volume /mnt/gitlab/logs:/var/log/gitlab \
   --volume /mnt/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce
  • --hostname 配置gitlab 服务器域名
  • --publish 配置容器 端⼝映射 容器80端⼝->宿主机8091
  • --name 容器名
  • --restart 配置重启指令
  • --volume 配置容器⽬录映射 --volume /mnt/gitlab/config:/etc/gitlab 容器中 / etc/gitlab 映射到宿主机⾥的 /mnt/gitlab/config

配置:/etc/gitlab.rb

进⼊docker docker exec -it <容器ID> 进⼊ /etc/gitlab/gitlab.rb 空⽩处加上

#gitlab服务器访问地址
external_url 'http://gitlab.example.com'
#gitlab ssh端⼝
gitlab_rails['gitlab_shell_ssh_port'] = 8022

重启gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

nginx反向代理

由于gitlab 容器映射的端⼝不是80端⼝,所以需要在宿主机上做⼀层反向代理:将 www.example.com 域名请求代理到本机的8091端⼝

#宿主机配置反向代理
server {    
  listen 80;
  server_name www.exanple.com
  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_pass http://127.0.0.1:8091$request_uri;
      proxy_redirect off;
  }
}

docker迁移gitlab

首先保证服务器A 和 服务器B 的gitlab版本一致,建议用同一个images

假设现在要把服务器A的gitlab全部迁移至服务器B

备份gitlab

进入服务器A镜像

docker exec -it gitlab /bin/bash

停止项目,主要目的是为了防止有人提交代码

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

备份

gitlab-rake gitlab:backup:create

这里会得到一个压缩包。路径在/mnt/gitlab/data/backups/1654170874_2022_06_02_11.1.4_gitlab_backup.tar

下载压缩包上传到服务器B

下面操作服务器B

把压缩包放到/mnt/gitlab/data/backups目录下面

chmod +x 1654170874_2022_06_02_11.1.4_gitlab_backup.tar 防止gitlab操作没有权限。这里加上可操作权限



进入服务器A镜像

docker exec -it gitlab /bin/bash

停止项目,主要目的是为了防止有人提交代码

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

gitlab自动生成表格

gitlab-rake gitlab:backup:restore BACKUP=1654170874_2022_06_02_11.1.4

这里一直yes下去就行。大概3-5分就完成了。主要看服务器配置

重启

gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true

完成

问题

docker安装gitlab完成之后访问一直是504 time out怎么办?

猜测应该是腾讯云服务器,腾讯云服务器的网段跟docker冲突。可以进入gitlab容器里面curl 127.0.0.1看下是否能ping通,正常是可以的。然后ping baidu.com就无法ping通。同时:docker无法映射端口也可以看下是否是这个问题导致

# 解决方案
在宿主机 vim /etc/docker/daemon.json
有这个文件就追加"bip": "192.168.1.5/24"
没有就直接生成{"bip": "192.168.1.5/24"}即可
参考:https://qq52o.me/2766.html

docker gitlab迁移 备份 部署 搭建以及各种问题的更多相关文章

  1. Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken

    前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...

  2. 把Gitlab迁移到Docker容器里

    把Gitlab迁移到Docker容器里 Apr 9, 2015. | By: 任怀林 公司的gitlab一直是运行在ovm的虚拟机里的,版本还是6.7.5.版本有点老了,最近在研究docker,于是想 ...

  3. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  4. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  5. Centos7安装部署搭建gitlab平台、汉化

    Centos7安装部署搭建gitlab平台.汉化 安装环境要求:内存不要小于4G,否则后期web界面可能会报错 一.准备工作 1.1 查看系统版本 首先查询系统版本,下载Gitlab的对应版本 [ro ...

  6. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  7. docker+gitlab+gitlab-runner部署

    环境 服务端:centos7 客户端:window 在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传 ...

  8. docker+gitlab的安装和迁移

     docker+gitlab的安装 docker search gitlab docker pull docker.io/gitlab/gitlab-ce docker run --name=: -- ...

  9. Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图

    Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图 转载自:原创 IT综合 作者:百联达 时间:2017-05-09 15:48:08 41 ...

随机推荐

  1. Vue路由器的hash和history两种工作模式 && Vue项目编译部署

    1 # 一.Vue路由器的两种工作模式 2 # 1.对于一个uri来说,什么是hash值? 井号及其后面的内容就是hash值. 3 # 2.hash值不会包括含在HTTP请求中,即:hash值不会带给 ...

  2. Odoo14 TypeError: Cannot read property 'classList' of undefined

    Traceback: TypeError: Cannot read property 'classList' of undefined at Class.setLocalState (http://l ...

  3. 项目经验记录丨Modbus转EtherNET/IP协议转换应用

    使用电脑通过软件来进行模拟 EtherNET/IP主站连接Mdodbus从站设备的项目记录.使用软件为EIPScan 模拟主站,通过Modbus转EtherNET/IP网关连接Modbus Slave ...

  4. OC高仿iOS网易云音乐AFNetworking+SDWebImage+MJRefresh+MVC+MVVM

    效果 因为OC版本大部分截图和Swift版本一样,所以就不再另外截图了. 列文章目录 因为目录比较多,每次更新这里比较麻烦,所以推荐点击到主页,然后查看iOS云音乐专栏. 目简介 这是一个使用OC语言 ...

  5. tomcat线程池

    tomcat线程池和普通的线程池设计上有所区别,下面主要来看看它是如何设计的 tomcat中线程池的创建 org.apache.tomcat.util.net.AbstractEndpoint#cre ...

  6. 简单理解 Flutter 中 StatelessWidget 和 StatefulWidget

    Widget 分为了两种类型,分别为 StatelessWidget 和 StatefulWidget. 顾名思义,StatelessWidget 就是无状态的组件,它只是作为一个不发生任何更新状态的 ...

  7. 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性

    写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...

  8. Postman中的断言

    Postman设置断言 一.断言的定义 1.什么是断言? 一般一个完整的接口测试,包括:请求->获取响应正文->断言,请求和获取响应正文很常见.断言一般是对请求的响应结果做操作,判断预期结 ...

  9. 钓鱼利用-CVE-2018-20250

    钓鱼利用-CVE-2018-20250 漏洞影响版本 WinRAR < 5.70 Beta 1 Bandizip< = 6.2.0.0 好压(2345压缩) < = 5.9.8.10 ...

  10. Javascript实现base64的加密解密方法

    1 function Base64() { 2 // private property 3 _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl ...