Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

如何在 WSL 2 + Docker 環境中開發 Django:安裝順序與最佳實踐

最後更新:2025年3月4日架構

本文為 Docker 進階介紹 系列文,第 5 篇:

  1. 初學者指南:深入了解 WSL 2(Windows Subsystem for Linux 2)
  2. 虛擬機器(VM)是什麼?完整入門指南
  3. 什麼是核心(Kernel)?初學者完整指南
  4. Docker vs. 虛擬機器(VM):初學者完整比較指南
  5. 如何在 WSL 2 + Docker 環境中開發 Django:安裝順序與最佳實踐 👈進度
  6. 初學者指南:什麼是 Dockerfile?—— 以實際範例解析
  7. Docker Compose 初學者指南:使用範例解析
  8. Docker Compose:up vs up -d 的差異與應用
  9. Linux 常見指令入門:從 sudo 到日常操作
  10. Linux 解決方案:VSCode 無法儲存檔案權限問題

閱讀本文前,建議先理解 Docker 基本介紹系列文 相關概念。

當你準備在 Windows 上使用 Docker 開發 Django 時,可能會有這些疑問:

  • 我應該先安裝 Python,還是先寫 Dockerfile?
  • WSL 2、Docker、Python 之間的關係是什麼? 應該按照什麼順序安裝?
  • Django 是 Python 的 Web 框架,我還需要在 Windows 上安裝 Python 嗎?

如果你是新手,這篇文章將詳細介紹 如何規劃 WSL 2、Docker 和 Python,並提供最佳的 安裝順序,確保你的開發環境高效且穩定!


WSL 2、Docker、Python 之間的關係

在 Windows 上開發 Django,主要有 兩種方式:

  1. 直接在 Windows 上安裝 Python 與 Django(不建議)
  2. 使用 WSL 2 + Docker,建立可攜式的 Django 開發環境(最佳方案)

為什麼不建議直接在 Windows 上安裝 Python?

  • Django 是 Linux 友好的框架,而 Windows 上的 Python 可能會遇到相容性問題。
  • Docker 提供獨立的開發環境,讓你的專案更容易管理,且與正式部署環境一致。

WSL 2、Docker、Python 之間的關係

技術角色作用
WSL 2基礎環境讓 Windows 可以運行真正的 Linux,提供最佳效能
Docker容器管理負責啟動獨立的 Django 環境,隔離 Python 依賴
Python開發語言Django 需要 Python,但 Python 應該安裝在 Docker 容器內,而不是 Windows 本機
角色基礎環境
作用讓 Windows 可以運行真正的 Linux,提供最佳效能
角色容器管理
作用負責啟動獨立的 Django 環境,隔離 Python 依賴
角色開發語言
作用Django 需要 Python,但 Python 應該安裝在 Docker 容器內,而不是 Windows 本機

結論:

✅ 先安裝 WSL 2,讓 Windows 能夠支援 Linux
✅ 再安裝 Docker,使用容器來運行 Django,而不是直接安裝 Python
✅ 最後撰寫 Dockerfile,在容器內安裝 Python & Django,而不是在 Windows 上安裝 Python


WSL 2、Docker、Django 的安裝順序

為了確保環境穩定,建議按照以下順序安裝:

安裝 WSL 2

為什麼先安裝 WSL 2?

  • Windows 本身無法直接運行 Linux,但 WSL 2 可以 提供完整的 Linux 環境,讓 Docker 可以使用 Linux 核心。
  • WSL 2 讓 Docker 運行更快、更高效,因為它比 Hyper-V 更輕量。

安裝 WSL 2

  1. 開啟 PowerShell(系統管理員權限),輸入:
 wsl --install
  1. 安裝 Ubuntu(推薦) 作為 WSL 2 的 Linux 發行版:
wsl --set-default-version 2
  1. 確認 WSL 2 是否已啟動
wsl -l -v

如果顯示:

NAME            STATE           VERSION
Ubuntu         Running         2

代表 WSL 2 已啟動。


安裝 Docker

為什麼第二步安裝 Docker?

  • Docker 需要依賴 WSL 2,因此必須先安裝 WSL 2。
  • Docker 允許我們在容器內安裝 Python,不影響 Windows 環境。

安裝 Docker

  1. 下載 Docker Desktop:官方網站
  2. 安裝完成後,開啟 Docker Desktop > Settings > General,啟用: ✅ “Use the WSL 2 based engine”
  3. 測試 Docker 是否正常運行:
docker run hello-world

如果成功,會顯示:

Hello from Docker!

撰寫 Dockerfile 並安裝 Python

為什麼第三步撰寫 Dockerfile?

  • 不要直接在 Windows 或 WSL 內安裝 Python,而是讓 Docker 幫你管理 Python 環境。
  • Dockerfile 讓你的開發環境 與正式環境一致,避免「本機能跑、伺服器不能跑」的問題。

建立 Django Docker 環境

  1. 建立專案資料夾
mkdir my-django-project
cd my-django-project
  1. 建立 Dockerfile 在 my-django-project 內建立 Dockerfile,內容如下:
# 使用官方 Python 3.9 映像檔
FROM python:3.9

# 設定工作目錄
WORKDIR /app

# 複製 requirements.txt(列出 Django 依賴)
COPY requirements.txt requirements.txt

# 安裝 Django 及相關依賴
RUN pip install -r requirements.txt

# 開啟容器時的預設命令
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
  1. 建立 requirements.txt
echo "django" > requirements.txt
  1. 建立 Docker 容器
docker build -t my-django-app .
  1. 啟動 Django 開發伺服器
docker run -p 8000:8000 my-django-app

現在你可以在 http://localhost:8000 訪問 Django 專案 🎉!


最佳開發流程

當你開發 Django 專案時,建議遵循這個流程:

1️⃣ 開啟 WSL 2(確保 WSL 2 運行)
2️⃣ 在 WSL 2 內 clone Django 專案

git clone https://github.com/yourusername/your-django-project.git
cd your-django-project

3️⃣ 使用 VS Code 開啟專案

code .

4️⃣ 啟動 Django Docker 容器

docker-compose up

5️⃣ 進入 Django 容器

docker exec -it my-django-app bash

你現在已經進入 Django 的 Linux 環境,可以執行:

python manage.py migrate
python manage.py createsuperuser

總結

  • 先安裝 WSL 2,讓 Windows 支援 Linux 環境。
  • 再安裝 Docker,確保所有開發工具(Python、Django)都在 Docker 容器內運行。
  • 最後撰寫 Dockerfile,讓開發環境與正式環境一致,避免版本衝突。

這樣的開發方式可以:

✅ 保持 Windows 系統乾淨,不安裝 Python
✅ 讓 Django 環境與正式部署環境保持一致
✅ 確保開發環境穩定,避免 Python 版本衝突

如果你是 Django 開發者,強烈建議你使用 WSL 2 + Docker,這是最強大的開發組合 🚀!

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

架構

目錄

  • WSL 2、Docker、Python 之間的關係
  • WSL 2、Docker、Python 之間的關係
  • WSL 2、Docker、Django 的安裝順序
  • 安裝 WSL 2
  • 安裝 Docker
  • 為什麼第二步安裝 Docker?
  • 安裝 Docker
  • 撰寫 Dockerfile 並安裝 Python
  • 為什麼第三步撰寫 Dockerfile?
  • 建立 Django Docker 環境
  • 最佳開發流程
  • 總結