在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!