目录

一、下载和安装docker

二、构建Gitlab

2.1 初始化目录

2.2 下载镜像

2.3 首次登录后的必要设置

2.4 常见问题与技巧

2.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 首次登录后的必要设置

登录成功后,立即进行以下操作:

  1. 修改 root 密码​(安全性要求)
  2. 配置邮箱​(用于通知和密码重置)
  3. 创建个人访问令牌​(用于 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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐