在windows server 2022搭建gitlab......但是失败了
- [1. 前言](#1. 前言)
- [2. 安装ubuntu环境](#2. 安装ubuntu环境)
- [2. 安装docker](#2. 安装docker)
- [3. 映射](#3. 映射)
-
- [3.1 端口映射](#3.1 端口映射)
- [3.2 路径映射](#3.2 路径映射)
1. 前言
本来按理来说没必要另起一篇,但是没想到,在新机器的windows server 2022上按照上篇搭建了之后,发现gitlab安装成功后,怎么都起不来,在管理页面也始终是500错误。
折腾了几个星期,用尽各种办法都搞不定,docker desktop还一直在崩溃,换了新版本也没用。
直到找到docker desktop官方页面Install Docker Desktop on Windows文档中的一句话,一切才豁然开朗......
bash
Docker Desktop is not supported on server versions of Windows, such as Windows Server 2019 or Windows Server 2022.
nmd,wsm
总之,有点难崩了,它让我去微软的官方文档开始:为容器准备 Windows查找使用方法。
顺便,又找到了一位前辈写的教程:Windows Server 2022 安装配置------安装 Docker
既然找到了根因,那就又有了信心,开干!
2. 安装ubuntu环境
打开powershell(注意!不能是cmd,否则会没有相关的命令可以执行!)
安装虚拟容器环境
bash
Install-WindowsFeature -Name Hyper-V
Install-WindowsFeature -Name containers
然后重启电脑。
再次打开powershell,安装docker
bash
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
\install-docker-ce.ps1
# 检查版本
docker version
前辈的文章中说可选安装docker-compose,但是安装之后却报错了,不过考虑到也用不着多容器执行,就跳过了。
再次重启电脑。
安装wsl(该指令只支持windows server 2022版本,其它需要手动安装)
bash
wsl --install
这会自动下载并安装Ubuntu系统到你的windows上,等待下载安装完成。
注意,这个过错中会让你输入初始用户名和2次密码,记得修改内容!后面再改会非常麻烦!
退出wsl
bash
exit
查看wsl版本,确定是wsl2
bash
wsl --status
再次进入wsl:
bash
wsl
此外,列出一些命令:
查看wsl中的系统
bash
wsl --list --verbose
注销(删除)wsl中的系统
bash
wsl --unregister <Ubuntu名称>
2. 安装docker
这部分基本就是照抄前辈写的内容:Windows Server 2022 安装配置------安装 Docker
进入wsl
bash
wsl
安装依赖
bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
安装docker
bash
# 创建存放文件夹
sudo mkdir -p /etc/apt/keyrings
# curl下载密钥,并存放至刚创建的文件夹下
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置存储库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
验证
bash
sudo service docker start
sudo docker version
成功打印版本信息,安装docker成功。
bash
# 将当前用户添加到docker组(避免每次使用sudo),需要重启wsl生效
sudo usermod -aG docker $USER
后续使用wsl中的docker,安装gitlab。
3. 映射
3.1 端口映射
wsl2会自动将端口映射到windows相同端口
3.2 路径映射
将共享文件夹路径从docker映射到windows:
用/mnt/<盘符>/<文件夹>映射(如/mnt/d/gitlab-data),对应 Windows 的D:\gitlab-data。
但是!!!/mnt/<盘符>/下面的文件系统本质上仍然是windows的文件系统,所以直接映射之后,gitlab运行会报错!!!
需要在/mnt下面新建linux文件系统的目录,用于挂载,例如:
bash
mkdir -p /mnt/gitlab/config
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
在windows系统中想要访问这些文件只需要在文件浏览器里面输入:
bash
\\wsl$
如果权限不足,则在wsl中把默认登录用户修改为root:
bash
sudo vi /etc/wsl.conf
重启wsl
bash
wsl --shutdown
......然后启动gitlab还是报错500了。
我投降,把数据都打包在容器里面吧,不搞外部数据路径映射了,这样下次搬迁的时候还好搬一点......
于是,直接下载完整的latest的gitlab镜像,不使用任何外部路径,在容器内部运行,不改任何东西!
又报错500了......
500的错误实在太多,根本修不完,决定投降。
gitlab再见,一转部署gitea!