搭建gitlab
1. 拉取gitlab镜像
docker pull ahead180/gitlab:gitlab-zh
2. 查看镜像
docker image ls
3. 创建目录和启动gitlab容器
mkdir -p /data/gitlab_dir/{data,config,logs}
docker container run -itd --name gitlab-zh --restart=always -p 80:80 -p 4422:22 -v /data/gitlab_dir/config/:/etc/gitlab -v /data/gitlab_dir/data/:/var/opt/gitlab -v /data/gitlab_dir/logs/:/var/log/gitlab --cpus=2 --memory=3g ahead180/gitlab:gitlab-zh
注意: 映射ssh端口时,一定要宿主机的映射端口和容器内ssh的端口一致。(下面有修改容器内ssh端口的方法)
4. 修改配置文件
cd /data/gitlab_dir/config/
egrep -v "^$|^#" gitlab.rb
external_url 'http://192.168.192.157' # 配置http协议所使用的访问地址,不加端口号默认为80
gitlab_rails['gitlab_ssh_host'] = '192.168.192.157' # 配置ssh协议所使用的访问地址
gitlab_rails['gitlab_shell_ssh_port'] = 4422 # 配置ssh协议所使用的访问端口
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" # 备份时用到的目录
5. 重启docker
systemctl restart docker.service
查看
docker container ls
docker container exec -it gitlab-zh bash
root@864c50335b92:/# gitlab-ctl status
run: alertmanager: (pid 8856) 77986s; run: log: (pid 482) 152434s
run: gitaly: (pid 8870) 77986s; run: log: (pid 481) 152434s
run: gitlab-monitor: (pid 8888) 77985s; run: log: (pid 487) 152434s
run: gitlab-workhorse: (pid 8900) 77985s; run: log: (pid 480) 152434s
run: logrotate: (pid 21387) 2384s; run: log: (pid 478) 152434s
run: nginx: (pid 8921) 77984s; run: log: (pid 479) 152434s
run: node-exporter: (pid 9004) 77984s; run: log: (pid 485) 152434s
run: postgres-exporter: (pid 9011) 77983s; run: log: (pid 486) 152434s
run: postgresql: (pid 9022) 77983s; run: log: (pid 501) 152434s
run: prometheus: (pid 9031) 77982s; run: log: (pid 483) 152434s
run: redis: (pid 9045) 77982s; run: log: (pid 489) 152434s
run: redis-exporter: (pid 9050) 77981s; run: log: (pid 484) 152434s
run: sidekiq: (pid 9069) 77980s; run: log: (pid 503) 152434s
run: sshd: (pid 9072) 77979s; run: log: (pid 32) 152445s
run: unicorn: (pid 9093) 77978s; run: log: (pid 488) 152434s
6. 测试.
# 使用http
git clone http://192.168.192.157/root/test.git
正克隆到 'test'...
Username for 'http://192.168.192.157': root
Password for 'http://root@192.168.192.157':
remote: Counting objects: 7293, done.
remote: Compressing objects: 100% (1234/1234), done.
remote: Total 7293 (delta 5975), reused 7263 (delta 5953)
接收对象中: 100% (7293/7293), 4.99 MiB | 0 bytes/s, 完成.
处理 delta 中: 100% (5975/5975), 完成.
检查连接... 完成。
root@node1:~# ls
backup_gitlab.sh test
# 使用ssh (记得容器宿主机的cat /proc/sys/net/ipv4/ip_forward的值要是1)
(1) 在客户端生成密钥
(2) 把公钥配置到 GitLab 中
(3) 然后就可以使用了(不用输用户密码)
7. 备份脚本
进入容器
(1) root@864c50335b92:~# cat > /root/backup_gitlab.sh <<EOF
#!/bin/bash
BACKUP_PATH1="/var/opt/gitlab/backups/"
REMOTE_HOST="root@192.168.192.200"
BACKUP_PATH2="/data/backup_gitlab_dir/"
DAY=5
set -e
exec >> /root/log.log
echo "++++++++++++++++++++++++++"
gitlab-rake gitlab:backup:create
find \$BACKUP_PATH1 -name "*.tar" -ctime +\$DAY -type f -exec rm -rf {} \;
sleep 1
/opt/gitlab/embedded/bin/rsync -e 'ssh -p 4422' --delete -az \${BACKUP_PATH1} \${REMOTE_HOST}:\${BACKUP_PATH2}
EOF
(2) 设置定时任务
crontab -e
0 0 */1 * * /root/backup_gitlab.sh
(3) 开启cron
root@864c50335b92:~# /etc/init.d/cron restart
* Restarting periodic command scheduler cron
* Stopping periodic command scheduler cron [ OK ]
* Starting periodic command scheduler cron
网友评论