准备
搜索gitlab社区版
docker search gitlab-ce
简单安装
docker run -d -p 8082:80 --name gitlab twang2218/gitlab-ce-zh:11.1.4
正式安装
映射web端口、https端口、ssh端口,映射配置目录、日志目录、数据目录。
# 创建独立的网络环境
docker network create gitlab-net
mkdir -p /docker/gitlab/
# 启动
docker run -d --hostname 域名地址 \
-p 8082:80 -p 8443:443 -p 8022:22 \
--restart unless-stopped \
--volume /docker/gitlab/config:/etc/gitlab \
--volume /docker/gitlab/logs:/var/log/gitlab \
--volume /docker/gitlab/data:/var/opt/gitlab \
--network gitlab-net \
--name gitlab twang2218/gitlab-ce-zh:11.1.4
访问http://域名地址:8082/
并创建root用户账号。
此时启动的gitlab服务没有办法通过ssh的方式同步仓库,需要修改gitlab的配置文件并重启。
vi /docker/gitlab/config/gitlab.rb
docker exec gitlab gitlab-ctl reconfigure
配置文件gitlab.rb
内容:
- external_url 设置外链(此处的端口即web服务启动端口)
- gitlab_shell_ssh_port 设置网页上显示/复制ssh地址地方的端口
- gitlab_email_enabled 启用邮件通知开关(注意要在创建完root账号后启用,否则由于账号规则root用户无法创建)
# 设置外链
external_url 'http://burna.cn:8082'
# 配置git链接里面的端口
gitlab_rails['gitlab_shell_ssh_port'] = 8022
# 设置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 配置邮件
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "你的qq邮箱"
gitlab_rails['gitlab_email_display_name'] = "发件人显示名称"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "qq邮箱地址"
gitlab_rails['smtp_password'] = "qq邮箱授权码/密码"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
gitlab-mirrors
安装gitlab服务依赖包,可以在python中调用gitlab接口
yum install python-pip
pip install python-gitlab
编译python gitlab3库
yum install python-setuptools
git clone https://github.com/alexvh/python-gitlab3.git
cd python-gitlab3
git checkout v0.5.4
python setup.py install
创建gitmirror用户(将公钥同步gitlab、github、gitee上)
useradd gitmirror
ssh-keygen -t rsa -f ~/.ssh/id_rsa
# 测试公钥是否有效
ssh -T git@github.com
ssh -T git@gitee.com
获取同步镜像用到的代码并安装:
- gitlab创建用户gitmirror
- gitlab创建组Mirrors
- gitlab为gitmirror创建访问令牌
# 参考下面 gitlab_user_token_secret 的获取方式
echo "gitmirror用户在gitlab上的个人访问令牌" > private_token
git clone https://github.com/samrocketman/gitlab-mirrors.git
cd gitlab-mirrors
chmod 755 *.sh
cp config.sh.SAMPLE config.sh
cat config.sh| grep gitlab_
修改配置文件config.sh
:
# 对应gitlab上面的组
gitlab_namespace="Mirrors"
# 对应gitlab网页地址
gitlab_url="http://域名地址:8082/"
# 对应gitlab用户
gitlab_user="gitmirror"
# gitlab用户访问授权令牌
gitlab_user_token_secret="$(head -n1 "${user_home}/private_token" 2> /dev/null || echo "")"
......
添加、删除、同步镜像仓库
cd ~/gitlab-mirrors
./add_mirror.sh --git --project-name halo --mirror git@github.com:halo-dev/halo.git
./add_mirror.sh --git --project-name halo --mirror git@gitee.com:halo-dev/halo.git
./delete_mirror.sh -d halo
./git-mirrors.sh
创建定时同步任务
- 创建定时任务脚本:
cron_hourly.sh
- 每3小时执行一次:
0 * * * * /home/gitmirror/cron_hourly.sh
#!/bin/sh
sh_file="/home/gitmirror/gitlab-mirrors/git-mirrors.sh"
sh_log="/home/gitmirror/cron_hourly.log"
echo "[`date "+%F %T"`] 执行镜像同步任务" >> ${sh_log}
sh ${sh_file} 2>&1 >> ${sh_log}
解决linux默认pip版本较低问题
升级系统默认的python对应的pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
/bin/pip --version
升级系统默认python版本
安装python2
# 下载、解压、编译、安装
wget http://npm.taobao.org/mirrors/python/2.7.18/Python-2.7.18.tgz
tar -zxvf Python-2.7.18.tgz
cd Python-2.7.18
./configure --prefix=/opt/python-2.7.18
make && make install
# 创建软链
cd /opt && ln -snf python-2.7.18/ python2.7
安装python3
# 下载、解压、编译、安装
wget http://npm.taobao.org/mirrors/python/3.8.12/Python-3.8.12.tgz
tar -zxvf Python-3.8.12.tgz
cd Python-3.8.12
./configure --prefix=/opt/python-3.8.12
make && make install
# 创建软链
cd /opt && ln -snf python-3.8.12/ python3.8
指定yum使用的python版本,避免因为升级系统默认的python2导致yum使用不了:
# /usr/bin/python 改成 /usr/bin/python2.7
vi /usr/bin/yum
升级系统默认的python2版本
cd /bin
# 切换python2版本
## 切换之后会导致yum依赖的python无法使用,所以yum脚本需要强制指定以前老本的python
ln -snf /opt/python2.7/bin/python python2
ln -snf /opt/python2.7/bin/python-config python2-config
# 默认安装的python2可能没有pip工具,需要手动安装一下
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
# 切换pip2版本
ln -snf /opt/python2.7/bin/pip pip2
python --version
pip --version
恢复系统默认的python2,pip2
cd /bin
ln -snf python2.7 python2
ln -snf python2.7-config python2-config
ln -snf pip2.7 pip2
python --version
pip --version
升级系统默认的python3版本
cd /bin
# 切换python3版本
ln -snf /opt/python3.8/bin/python3 python3
ln -snf /opt/python3.8/bin/python3-config python3-config
# python3自带pip3工具,此处可以选择是否升级pip3
# wget https://bootstrap.pypa.io/get-pip.py
# python3 get-pip.py
ln -snf /opt/python3.8/bin/pip3 pip3
python3 --version
pip3 --version
其他
停止+删除容器实例
for id in `docker ps -a | grep gitlab | awk '{print $1}'`; do \
echo "clean [`docker ps -a | grep $id`]"; \
docker stop $id && docker rm $id; \
done
管理镜像
# 查看镜像
docker images
# 删除镜像
docker rmi twang2218/gitlab-ce-zh:11.1.4