使用 Docker on WSL 2 快速部署個人 GitLab 服務

Ted Liou 2025.08.27 開發維運 最後更新 2026.03.17

快速摘要

本文整理如何在 Windows 11 的 WSL 2 搭配 Docker Desktop 部署 GitLab CE,也把 GitLab 官方目前不正式支援 Docker for Windows 這件事先講清楚。這套做法適合個人實驗與內網協作;正式環境仍建議改用原生 Linux 主機。

如果我們只是想在 Windows 11 上快速架一台自己的 GitLab,WSL 2 搭配 Docker Desktop 確實能跑,而且部署速度很快。不過這件事要先說清楚:GitLab 官方目前仍明講 Docker for Windows 不在正式支援範圍內,原因是 volume 權限與相容性問題還是存在。請參考:Install GitLab in a Docker container

這代表本文適合拿來做個人實驗、內網開發、教學或小型團隊協作。如果我們要把 GitLab 當成長期正式服務,還是建議搬回原生 Linux 主機,後續升級、備份與排錯都會單純很多。

先準備 WSL 2 與 Docker Desktop

WSL 目前已經可以直接用 wsl --install 完成基本安裝。Microsoft 官方文件也提到,新安裝的 Linux 發行版預設就是 WSL 2。請參考:安裝 WSL

以系統管理員身分開啟 PowerShell,先執行:

1wsl --install

如果機器上還沒有 Linux 發行版,本文建議直接裝 Ubuntu。接著安裝 Docker Desktop,並確認兩個設定已經開啟:

  1. Settings > General > Use WSL 2 based engine
  2. Settings > Resources > WSL Integration 裡對 Ubuntu 的整合

Docker 官方文件現在也明確建議 WSL 至少更新到 2.1.5 以上,並直接從 WSL 發行版終端機操作 Docker。請參考:Docker Desktop WSL 2 backend on Windows

在 WSL 2 建立 GitLab 目錄與 Compose 設定

GitLab 官方現在把 Docker Compose 列為較推薦的安裝方式,所以本文不再用一長串 docker run 撐完整個流程。我們直接在 Ubuntu 裡準備目錄與 compose.yaml,後面升級與維護都會輕鬆一點。

先進入 Ubuntu 終端機,建立 GitLab 的資料夾:

1sudo mkdir -p /srv/gitlab/{config,logs,data}
2cd /srv/gitlab

接著建立 compose.yaml

 1services:
 2  gitlab:
 3    image: gitlab/gitlab-ce:latest
 4    container_name: gitlab
 5    restart: always
 6    hostname: 'gitlab.my.tw'
 7    environment:
 8      GITLAB_OMNIBUS_CONFIG: |
 9        external_url 'http://gitlab.my.tw'
10        gitlab_rails['gitlab_shell_ssh_port'] = 2222
11    ports:
12      - '80:80'
13      - '443:443'
14      - '2222:22'
15    volumes:
16      - '/srv/gitlab/config:/etc/gitlab'
17      - '/srv/gitlab/logs:/var/log/gitlab'
18      - '/srv/gitlab/data:/var/opt/gitlab'
19    shm_size: '256m'

這份設定有兩個地方值得先看清楚。

第一,hostnameexternal_url 我直接用 gitlab.my.tw 這類自訂網域,而不是 localhost。GitLab 官方文件也特別提醒不要用 localhost 當正式設定。

第二,SSH 我改映射成 2222:22。Windows 主機上常常已經有別的服務佔住 22 port,先錯開比較省事;之後 clone repository 時,SSH URL 也會跟著使用 2222。

如果這台機器只是個人測試環境,用 latest 可以先快速跑起來;但只要打算長期使用,還是建議照 GitLab 官方做法固定版本標籤,不要把升級風險留給未來的自己。

啟動 GitLab 並等待初始化

compose.yaml 所在目錄執行:

1docker compose up -d

GitLab 第一次初始化通常要等一段時間,這很正常。與其一直重整瀏覽器,我比較建議直接看 log:

1docker compose logs -f gitlab

看到服務逐步起來後,再打開瀏覽器連到 http://gitlab.my.tw。如果我們暫時還沒設定 hosts,也可以先用主機 IP 測試,但後面還是會建議補上網域名稱,後續 clone、Webhook 與 Runner 註冊都比較整齊。

取得 root 密碼並完成第一次登入

GitLab 官方文件目前給的做法,是直接從容器裡讀出 initial_root_password。這比打開 Docker Desktop 的檔案檢視器更直接,也比較不容易找錯位置。

執行:

1docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

你會看到像這樣的輸出:

1Password: xxxxxxxxxxxxxxxxxxxx

GitLab 官方也有提醒,這個密碼檔會在 24 小時後的第一次容器重啟時自動刪除,所以第一次登入後就把 root 密碼改掉,不要拖。

接著用帳號 root 和剛剛查到的密碼登入 GitLab,完成第一次初始化。

讓 Windows 可以用網域名稱連進來

如果這台 GitLab 暫時只在本機或內網使用,我們最簡單的做法,就是把主機 IP 寫進 Windows 的 hosts 檔案。

編輯 C:\Windows\System32\drivers\etc\hosts,加入:

1127.0.0.1  gitlab.my.tw

如果你是讓別台電腦也一起連這台 GitLab,就把 127.0.0.1 換成這台主機在 LAN 或 ZeroTier 上的實際 IP。這裡不需要把情境講得太複雜,原則就是:external_url 寫什麼,DNS 或 hosts 就要能真的解析到它。

總結

WSL 2 加 Docker Desktop 仍然是 Windows 上最快把 GitLab 跑起來的方法,特別適合個人實驗、課程示範或小型內網協作。不過本文也把界線先講明白了:GitLab 官方沒有正式支援 Docker for Windows,這套做法的價值在於方便,不在於它有多標準。

如果我們的目標是快速擁有一台可用的 GitLab,這條路很有效;如果目標是長期穩定營運,下一步就該把服務搬到原生 Linux。

作者

Ted Liou

現職 Unity C# 工程師,主要分享 Unity、C# 與 Vibe Coding 相關技術教學。

上一篇 在 WSL 2 上使用 Docker 部署 GitLab Runner 下一篇 Arduino 串接 Unity / TouchDesigner:使用 ArduinoJson 實現感測資料 JSON 序列化傳輸