在windows上基于docker搭建gitlab服务器
本文详细介绍了在Windows系统下使用Docker搭建GitLab服务器的完整流程。主要内容包括:1)Docker安装配置及WSL2环境准备;2)GitLab容器化部署步骤,涵盖目录初始化、镜像下载(含国内镜像源解决方案)、端口配置等;3)首次登录后的安全设置;4)常见问题处理与性能优化建议;5)日常管理命令集。文中特别针对国内网络环境提供了多种镜像源解决方案,并详细记录了安装过程中可能遇到的虚
目录
为了更好的进行个人项目的版本管理,同时使其具有一定的可移植性,我打算通过docker去搭建一个windows下的gitlab服务器。

一、下载和安装docker
Docker Desktop: The #1 Containerization Tool for Developers | Docker

安装时记得勾选使用WSL 2后端,这能提供更好的性能。如果没有这个选项可能是没开启虚拟化或者,没下载过WSL。没关系,可以先安着后面再改。
如果是没下载的话会自动弹出下载框,回车下载即可

但是安装成功后一直出现Virtualization support not detected的问题
首先运行下面的命令开启WSL2,注意需要用管理员权限
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
然后启动镜像管理工具
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

完成后需要重启
然后再powershell中运行
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart

看到状态是enable后就证明开启成功了
然后需要安一个linux的发行版,我们安装ubuntu就行,如果软件商店安不了,也可以直接去链接下载
https://releases.ubuntu.com/24.04.3/ubuntu-24.04.3-wsl-amd64.wsl
ubuntu-releases-24.04.3安装包下载-开源镜像站-阿里云
然后手动安装一下,前者是安装目标路径,后者是下载好的ubuntu
wsl --import Ubuntu D:\VirtualMachine\WSL\Ubuntu "C:\path\to\ubuntu-24.04.3-wsl-amd64.wsl"
我这还是不行出现了新问题
C:\Windows\System32>wsl --import Ubuntu D:\VirtualMachine\WSL\Ubuntu "C:\Users\tianyu.xin\Downloads\ubuntu-24.04.3-wsl-amd64.wsl"
当前计算机配置不支持 WSL2。
请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。
通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribution
有关信息,请访问 https://aka.ms/enablevirtualization
错误代码: Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED
再来一遍
# 启用Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# 启用虚拟机平台
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
# 启用WSL
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All
bcdedit /set hypervisorlaunchtype Auto
shutdown /r /t 0
然后再次执行导入ubuntu镜像的命令
wsl --import Ubuntu D:\VirtualMachine\WSL\Ubuntu "C:\path\to\ubuntu-24.04.3-wsl-amd64.wsl"

这样就成功了
然后设置WSL的默认版本是2
wsl --set-default-version 2

# 应该显示版本为2
wsl -l -v
# 运行Ubuntu测试
wsl -d Ubuntu

输入Ctrl+D可以退出
这时候再回去安装Docker

ok还是没有,算了,继续后面的操作,可以github或者谷歌登录一下,我这边就不登录了

二、构建Gitlab
2.1 初始化目录
找个空间比较大的盘创建我们的gitlab目录,按照下图创建

version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用社区版镜像
container_name: gitlab
restart: always
hostname: 'localhost'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:8989' # 自定义访问端口,避免与本地80端口冲突
nginx['listen_port'] = 8989
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- "8989:8989" # 网页访问端口
- "2222:22" # SSH端口,避免与系统SSH冲突
volumes:
- D:/gitlab/config:/etc/gitlab
- D:/gitlab/data:/var/opt/gitlab
- D:/gitlab/logs:/var/log/gitlab
shm_size: '256m'
2.2 下载镜像
打开PowerShell,进入 D:\gitlab 目录,执行以下命令即可在后台启动服务:
docker-compose up -d

国内访问不了可以加国内的镜像
右键docker配置

{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}


docker info
docker pull hello-world
还是不行的话源换成
"registry-mirrors": [
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn"
]
然后修改yaml文件
version: '3.6'
services:
gitlab:
image: registry.cn-hangzhou.aliyuncs.com/gitlab/gitlab-ce:latest # 使国内镜像
container_name: gitlab
restart: always
hostname: 'localhost'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:8989' # 自定义访问端口,避免与本地80端口冲突
nginx['listen_port'] = 8989
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- "8989:8989" # 网页访问端口
- "2222:22" # SSH端口,避免与系统SSH冲突
volumes:
- D:/gitlab/config:/etc/gitlab
- D:/gitlab/data:/var/opt/gitlab
- D:/gitlab/logs:/var/log/gitlab
shm_size: '256m'
还是不行,查下官网
https://cr.console.aliyun.com/cn-hangzhou/instances/images
搜索gitlab-ce
镜像换成这个在试试
registry.cn-hangzhou.aliyuncs.com/gitlab_org/gitlab-ce:latest
还不行的话试试别的
# 网易镜像
image: hub-mirror.c.163.com/gitlab/gitlab-ce:latest
# 中科大镜像
image: docker.mirrors.ustc.edu.cn/gitlab/gitlab-ce:latest
我这几个都不行
https://gitlab.com/gitlab-org/gitlab-ce/container_registry

但是这种给物理机安装的方案非常不推荐,很容易出错
# 尝试这个国内镜像源
docker pull registry.cn-hangzhou.aliyuncs.com/gitlab_org/gitlab-ce:16.8.2-ce.0
# 或者使用代理
docker pull gitlab/gitlab-ce:16.8.2-ce.0

终于下载完了

根据下载好的镜像修改配置文件
services:
gitlab:
image:gitlab/gitlab-ce:16.8.2-ce.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:8989'
nginx['listen_port'] = 8989
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- "8989:8989"
- "2222:22"
volumes:
- D:/gitlab/config:/etc/gitlab
- D:/gitlab/data:/var/opt/gitlab
- D:/gitlab/logs:/var/log/gitlab
shm_size: '256m'
networks:
- gitlab-net
networks:
gitlab-net:
driver: bridge

终于成功了
# 查看实时日志
docker logs -f gitlab
# 检查容器状态
docker ps
# 检查网络
docker network ls
可能需要10-30分钟
看到下面两个任意一个时证明部署成功
GitLab is ready!
==> /var/log/gitlab/gitlab-workhorse/current <==
输入下面命令获取初始秘钥
docker exec gitlab cat /etc/gitlab/initial_root_password
浏览器打开:http://localhost:8989

2.3 首次登录后的必要设置
登录成功后,立即进行以下操作:
- 修改 root 密码(安全性要求)
- 配置邮箱(用于通知和密码重置)
- 创建个人访问令牌(用于 API 调用)
2.4 常见问题与技巧
- 端口冲突:如果本地80或22端口已被占用,务必像示例一样使用自定义端口(如8989, 2222)。
- 性能优化:确保为Docker分配了足够的内存和CPU资源。如果感觉运行缓慢,优先考虑增加Docker的资源配额。
- 数据备份:定期备份
D:\gitlab\data目录下的数据,这是最可靠的保障。
2.5 常用管理命令
| 功能 | 命令 |
|---|---|
| 停止 GitLab | docker-compose stop |
| 启动 GitLab | docker-compose start |
| 重启 GitLab | docker-compose restart |
| 查看状态 | docker-compose ps |
| 查看日志 | docker-compose logs -f |
| 进入容器 | docker exec -it gitlab bash |
更多推荐
所有评论(0)