目录
前言
本文主要介绍WSL2 Ubuntu 20.04通过docker搭建gitlab私服,同理,很多Linux上好用的软件系统,也可以通过这种方式搭建,以此来提高在Windows的开发效率。
提示:建议不要使用最新的Ubuntu 22.04,因为安装时会报一些错误,会打乱你的思路
例如:Failed to retrieve available kernel versions.
Failed to check for processor microcode upgrades. 等...
一、docker安装
打开Ubuntu 20.04命令行窗口
# 准备工作
sudo apt remove docker docker-engine docker.io
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
# 安装docker
sudo apt install docker-ce
# 启动docker
sudo service docker start
二、gitlab安装
1.拉取镜像
sudo docker pull gitlab/gitlab-ce:latest
2.创建挂载目录
创建gitlab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
3.运行gitlab容器
sudo 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 gitlab/gitlab-ce:latest
4.修改gitlab配置
修改/mnt/gitlab/etc/gitlab.rb,把external_url改成部署机器的域名或者IP地址
vi /mnt/gitlab/etc/gitlab.rb
#首行添加
external_url 'http://192.168.0.79'
修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml,搜索关键字"Web server settings",将host值改成映射的外部主机ip地址和端口
vi /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml
#关键字"Web server settings"
host值修改为Windows ip(例如:192.168.0.79)
5.修改网络映射
# 映射windows 192.168.0.79的 80 端口到 WSL2的ip的 8090 端口:
netsh interface portproxy add v4tov4 listenaddress=192.168.0.79 listenport=80 connectaddress=172.27.96.75 connectport=8090
6.重置Docker里的gitlab管理员用户密码
#进入Docker容器运行环境
docker exec -it gitlab /bin/bash
#启动Ruby on Rails控制台
gitlab-rails console production
#开始重置gitlab管理员用户密码
user=User.where(id:1).first
user.password='12345678'
user.password_confirmation='12345678'
user.save!
看到true说明设置成功,使用exit退出即可
最后:重启gitlab服务,浏览器输入http://localhost就可以访问了。