快速摘要
本文整理如何在 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,並確認兩個設定已經開啟:
Settings > General > Use WSL 2 based engineSettings > 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'
這份設定有兩個地方值得先看清楚。
第一,hostname 與 external_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。