Centos使用Docker搭建自己的Gitlab社区版16.8.0-ce.0(设置汉化 修改密码 设置SSH秘钥 添加拉取命令端口号 备份至网盘和恢复)

根据我的经验 部署Gitlab(社区版) 至少需要2核4g的服务器 带宽3~4M

1. 在自己电脑上安装终端:宝塔ssl终端 或者 FinalShell,根据喜好安装即可

http://www.hostbuf.com/t/988.html
http://www.hostbuf.com/downloads/finalshell_windows_x64.exe

(1)安装好后连接SSL

2. 服务器(我的是香草云2核4G,大家可以随意):Centos7.9

(1)安装基础环境
sudo yum update -y (centos7.9更新)

(1.1)安装python3相关
sudo yum install epel-release -y
sudo yum install python3 -y
pip3 install --upgrade pip

(1.2)准备定时任务直接上传backups和密钥文件至百度网盘

执行: pip3 install bypy

a. 生成授权链接: bypy info

b. 在网页成功登录后 会得到授权码然后返回服务器输入这个授权码

c. 查看连接情况:bypy list

如果一切正常,会列出百度云账户根目录下的文件和文件夹。

(1.2)下面这一行按需安装
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel firewalld nano zip unzip -y

3. 安装Docker

(1)下载docker.sh脚本: curl -fsSL https://get.docker.com -o get-docker.sh

(2)检查docker是否下载成功 ls

(3)安装docker(5分钟或者更长):sh get-docker.sh

(4)启动Docker: systemctl start docker

(5)检查Docker运行状态(下图说明docker已经运行): systemctl status docker

可以同时执行 执行 1~5
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && systemctl start docker && systemctl status docker

(6)设置Docker随系统启动: sudo systemctl enable docker

4. 执行GitLab Docker镜像

(1)配置Centos环境变量 export GITLAB_HOME=/srv/gitlab

(2)将以下这段代码填好指定的ip后复制到服务器终端上

或者添加永久环境变量(因为偶尔会忘): vi /etc/environment

社区版

js 复制代码
sudo docker run --detach \
  --hostname 1.2.3.4 \
  --publish 8443:443 --publish 8080:80 --publish 8822:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:16.8.0-ce.0

其中:
1.2.3.4 要换成你的服务器IP地址
--publish 8443:443 --publish 8080:80 --publish 2222:22 \

格式为外部端口:容器内部端口 8080、2222端口可以随意替换。

8080:80表示将主机的8080端口映射到容器的80端口(GitLab的Web服务)。

2222:22表示将主机的2222端口映射到容器的22端口(GitLab的SSH服务)。

8443:443保持不变,因为它是HTTPS服务的标准端口。
记得在服务器安全组中开启 8080、80、22、2222、8443、443端口

(3)查看 gitlab是否正在运行(刚部署完可能需要等一会,因为gitlab比较大,需要配置各种数据,): docker ps

starting 还需要再等一会

如果出现下图则可以执行第6步(我花了10分钟左右)

(4)检查gitlab版本:docker exec -it gitlab gitlab-rake gitlab:env:info

(5)使用浏览器打开你的极狐Gitlab http://1.2.3.4:8080 1.2.3.4换成你的服务器ip

(6)查看初始管理员 root 的密码 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

(7)设置汉化:

(8)记得修改root 密码

(9)生成SSH秘钥

(9.1)ssh-keygen -t rsa -b 4096 -C "你的邮箱" 然后可以一直回车

(9.2)确保 ssh-agent 正在运行: eval "$(ssh-agent -s)"

(9.3)将 SSH 私钥添加到 ssh-agent:ssh-add ~/.ssh/id_rsa

(9.4)复制 SSH 公钥到剪贴板:cat ~/.ssh/id_rsa.pub

(10)进入后会发现拉取代码的命令并不是 8080端口 而是默认的80端口 接下来要修改一下gitlab配置

(10.1)进入 GitLab 容器: sudo docker exec -it gitlab /bin/bash

(10.2)修改gitlab.rb:vi /etc/gitlab/gitlab.rb

在文件最上边加这三行 ip换成自己服务器的ip

js 复制代码
external_url 'http://198.12.1.1'  
gitlab_rails['gitlab_ssh_host'] = '198.12.1.1'
gitlab_rails['gitlab_shell_ssh_port'] = 8899

(10.2)使配置生效(这时不要重启哈): gitlab-ctl reconfigure

(10.3)修改gitlab.yml配置:vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

(10.4)重启 GitLab: gitlab-ctl restart

(10.5)退出等待一会 看内存4g多的时候差不多gitlab准备完了...:exit

(11)gitlab备份和恢复

当前gitlab版本16.8.0社区版,使用docker部署,执行备份(大家参考即可)

设置定时任务:crontab -e

然后输入 如下格式的 你的sh脚本 执行时间可能会因为时区不同 加或减8小时 这个任务应该会定时执行的

我设置的是早8晚8

js 复制代码
0 8 * * *  /root/backup_and_upload.sh
0 20 * * *  /root/backup_and_upload.sh

(11.3)查看定时任务:crontab -l

备份命令 backup_and_upload.sh
js 复制代码
#!/bin/bash

#进入gitlab容器内部 docker exec -it gitlab bash

#bypy 脚本文件路径
BYPY="/usr/local/bin/bypy"
#docker 脚本文件路径
DOCKER="/usr/bin/docker"

# 获取当前日期和时间
CURRENT_TIME=$(date "+%Y_%m_%d__%H_%M_%S")

# 设置目标备份路径(存到百度网盘上的文件夹名字)
BACKUP_PATH="/gitlab_$CURRENT_TIME"


echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除原有备份"
$DOCKER exec gitlab bash -c 'rm /var/opt/gitlab/backups/*'
if [ $? -ne 0 ]; then
    echo "删除原有备份失败"
    exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除容器外部备份"
rm -r /srv/backups
rm /srv/gitlab.rb /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 创建新备份"
$DOCKER exec gitlab gitlab-backup create
if [ $? -ne 0 ]; then
    echo "创建新备份失败"
    exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') | 将容器内部文件复制出来准备上传backups gitlab.rb gitlab-secrets.json"
$DOCKER cp gitlab:/var/opt/gitlab/backups/ /srv/
$DOCKER cp gitlab:/etc/gitlab/gitlab.rb /srv/gitlab.rb
$DOCKER cp gitlab:/etc/gitlab/gitlab-secrets.json /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 将新包、gitlab.rb、gitlab-secrets.json上传至百度网盘"
$BYPY upload /srv/backups/  $BACKUP_PATH/backups/
$BYPY upload /srv/gitlab.rb $BACKUP_PATH/gitlab.rb
$BYPY upload /srv/gitlab-secrets.json /$BACKUP_PATH/gitlab-secrets.json
恢复命令 down_gitlab_config.sh (手动恢复)
js 复制代码
#!/bin/bash

# 获取用户输入的目录名
echo "请输入要从百度网盘下载的目录名:"
read DOWNLOAD_DIR

echo "$(date '+%Y-%m-%d %H:%M:%S') | 删除backups"
rm -rf /srv/backups
rm -rf /srv/gitlab.rb
rm -rf /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 从百度网盘上下载新gitlab.rb gitlab-secrets.json backups"
bypy download $DOWNLOAD_DIR/backups /srv/backups
bypy download $DOWNLOAD_DIR/gitlab.rb /srv/gitlab.rb
bypy download $DOWNLOAD_DIR/gitlab-secrets.json /srv/gitlab-secrets.json

echo "$(date '+%Y-%m-%d %H:%M:%S') | 开始恢复文件"
docker cp /srv/gitlab.rb gitlab:/etc/gitlab/
docker cp /srv/gitlab-secrets.json gitlab:/etc/gitlab/
docker cp /srv/backups/. gitlab:/var/opt/gitlab/backups/

echo "执行恢复镜像命令"
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop sidekiq

echo "进入到 Docker 容器的 backups/ 目录并获取第一个 .tar 文件的名字"
BACKUP_FILE=$(docker exec -it gitlab /bin/bash -c 'ls /var/opt/gitlab/backups/*.tar | head -n 1 | awk -F/ "{gsub(/_gitlab_backup.tar$/, \"\", \$NF); print \$NF}"')

echo "执行恢复命令"
docker exec -it gitlab gitlab-backup restore BACKUP=$BACKUP_NAME

echo "使配置生效"
sudo docker exec -it gitlab /bin/bash -c 'gitlab-ctl reconfigure'

echo "进入容器内部,并修改yml配置文件"
sudo docker exec -it gitlab sed -i 's/port: 80/port: 8080/' /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

echo "重启GitLab服务"
sudo docker exec -it gitlab gitlab-ctl restart
恢复过程中 输入两个 yes 然后希望你yes!



拓展:

开启gitlab容器: sudo docker start gitlab

停止gitlab容器: sudo docker stop gitlab

删除gitlab容器:sudo docker rm gitlab

祝大家学习和工作愉快!!!

相关推荐
Fireworkitte1 小时前
CentOS 和 RHEL
linux·centos
Waitccy2 小时前
Tomcat 配置 HTTPS 访问全攻略(CentOS 环境)
https·centos·tomcat·安全整改
孤的心了不冷2 小时前
【Docker】CentOS 8.2 安装Docker教程
linux·运维·docker·容器·eureka·centos
头疼的程序员3 小时前
docker学习与使用(概念、镜像、容器、数据卷、dockerfile等)
学习·docker·容器
IT小郭.3 小时前
使用 Docker Desktop 安装 Neo4j 知识图谱
windows·python·sql·docker·知识图谱·database·neo4j
淡水猫.3 小时前
hbit资产收集工具Docker(笔记版)
运维·docker·容器
GoodStudyAndDayDayUp3 小时前
gitlab+portainer 实现Ruoyi Vue后端CI/CD
vue.js·ci/cd·gitlab
伊成11 小时前
gitlab提交测试分支的命令和流程
gitlab
旧故新长12 小时前
访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
运维·docker·容器
white.tie12 小时前
Docker部署单节点Elasticsearch
elasticsearch·docker·jenkins