WSL子系统通过docker安装gitlab私服
环境
win10下的WSL子系统,子系统版本号:Ubuntu 20.04
docker版本:19.03.12,且设置了阿里云镜像加速
gitlab版本:gitlab-ce:11.0.1-ce.0
WSL子系统防火墙已关闭
下载镜像文件
docker pull beginor/gitlab-ce:11.0.1-ce.0
创建挂载目录
创建gitlab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
运行gitlab容器
docker run \
--detach \
--publish 8443:443 \
--publish 8090:80 \
--publish 4222:22 \
--name gitlab \
--restart unless-stopped \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce:11.0.1-ce.0
新建gitlab挂载目录时,挂载目录都是空文件夹,运行gitlab容器后,挂载目录下就有了对应文件。此时需要停止gitlab容器,然后删除gitlab容器。
修改gitlab配置
修改/mnt/gitlab/etc/gitlab.rb,把external_url改成部署机器的域名或者IP地址,搭建maven私服的时候也讲过,WSL子系统不能用ip,只能用localhost,所以命令如下:
vi /mnt/gitlab/etc/gitlab.rb
external_url 'http://localhost'
#这里还一个问题,external_url不能带上端口,不知道是不是WSL子系统问题
#进而导致通过http地址克隆项目时,地址上也少了端口,需要自己补上,或者用浏览器地址栏的地址末尾加上.git
修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml,搜索关键字"Web server settings",将host值改成映射的外部主机ip地址和端口,这里的配置会显示在gitlab仓库克隆地址。端口改了其实也没用,每次启动容器会自动变成80,不过完全不影响web访问以及代码下载提交等。
至此配置就修改完成了,重启docker(sudo service docker restart),然后重新运行gitlab容器,容器启动成功后gitlab的web管理页面就可以访问了。浏览器输入http://localhost:8090/,第一次访问,根据系统提示重新设置root账户密码即可。
gitlab创建项目
项目创建完成后,可以根据如下提示,克隆项目或者关联本地项目到远程仓库
命令行指令
- Git 全局设置
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
- 创建新版本库
git clone git@localhost:4222/root/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
- 已存在的文件夹
cd existing_folder
git init
git remote add origin git@localhost:4222/root/test.git
git add .
git commit -m "Initial commit"
git push -u origin master
- 已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@localhost:4222/root/test.git
git push -u origin --all
git push -u origin --tags
gitlab配置ssh密钥
克隆git仓库除了通过http方式,还可以通过ssh方式,而且ssh的方式只需要一次配置,就可以省去每次提交代码都要输入用户名密码的操作。
-
安装git-bash,后续所有操作都是在git-bash进行的
-
检查本地密钥
cd ~/.ssh
ll
#如果目录下有id_rsa和id_rsa.pub文件,则可以跳过生成密钥信息步骤
- 生成密钥信息
ssh-keygen -t rsa -C "your_email@youremail.com"
#一路Enter就行
- gitlab添加密钥
cd ~/.ssh
cat id_rsa.pub
#把公钥复制到剪切板
用浏览器打开gitlab页面,登录,然后点击用户头像,点击Settings,在左侧菜单栏点击SSH密钥,可以看到如下页面,此时把剪切板内容粘贴到输入框,然后点击增加密钥即可。
- ssh克隆一个项目
随便切一个目录,然后输入 git clone ssh://git@localhost:4222/root/test.git进行克隆,第一次操作需要输入yes确认建立连接,之后再克隆新的项目都可以直接操作了。
gitlab私服项目迁移到gitee等公网仓库
有时候我们需要把公网项目迁移到自己的gitlab服务器,或者把自己gitlab仓库中的项目迁移到gitee等公网进行开源,但是如果只上传代码的话,代码是没有灵魂的,所以迁移的时候要把提交记录一并迁移,具体操作如下:
- 从原地址克隆一份裸版本库
#先切到一个空目录,所有操作通过git-bash完成
git clone --bare http://localhost:8090/root/test.git
- 在新的git服务器创建一个新项目
- 以镜像推送的方式上传代码到新项目中
cd test.git
git push --mirror gitee新仓库地址
至此项目就完成了迁移,从新仓库地址git clone项目即可。
项目迁移成功之后,其实不用git clone,直接在旧的项目终端输入一条命令,就能把本地代码的远程仓库切换到新仓库地址。
git remote set-url origin gitee新仓库地址