使用容器進行 Vue.js 開發
先決條件
概述
在本節中,您將使用 Docker Compose 為您的 Vue.js 應用程式設定生產和開發環境。這種方法簡化了您的工作流程——在生產環境中透過 Nginx 提供輕量級靜態站點,併為高效的本地開發提供一個快速、即時過載的開發伺服器(使用 Compose Watch)。
你將學習如何
- 配置隔離環境:為生產和開發用例設定單獨最佳化的容器。
- 開發中的即時過載:使用 Compose Watch 自動同步檔案更改,實現即時更新,無需手動干預。
- 輕鬆預覽和除錯:在容器內進行開發,享受無縫的預覽和除錯體驗——每次更改後無需重新構建。
自動更新服務(開發模式)
利用 Compose Watch 在您的本地機器和容器化的 Vue.js 開發環境之間實現即時檔案同步。這個強大的功能消除了手動重建或重啟容器的需要,提供了一個快速、無縫、高效的開發工作流程。
透過 Compose Watch,您的程式碼更新會立即反映在容器內部——非常適合快速測試、除錯和即時預覽更改。
步驟 1:建立開發 Dockerfile
在專案根目錄中建立一個名為 Dockerfile.dev
的檔案,其內容如下
# =========================================
# Stage 1: Develop the Vue.js Application
# =========================================
ARG NODE_VERSION=23.11.0-alpine
# Use a lightweight Node.js image for development
FROM node:${NODE_VERSION} AS dev
# Set environment variable to indicate development mode
ENV NODE_ENV=development
# Set the working directory inside the container
WORKDIR /app
# Copy package-related files first to leverage Docker's caching mechanism
COPY package.json package-lock.json ./
# Install project dependencies
RUN --mount=type=cache,target=/root/.npm npm install
# Copy the rest of the application source code into the container
COPY . .
# Change ownership of the application directory to the node user
RUN chown -R node:node /app
# Switch to the node user
USER node
# Expose the port used by the Vite development server
EXPOSE 5173
# Use a default command, can be overridden in Docker compose.yml file
CMD [ "npm", "run", "dev", "--", "--host" ]
此檔案使用開發伺服器為您的 Vue.js 應用程式設定了一個輕量級開發環境。
步驟 2:更新你的 compose.yaml
檔案
開啟您的 `compose.yaml` 檔案並定義兩個服務:一個用於生產環境(`vuejs-prod`),一個用於開發環境(`vuejs-dev`)。
以下是 Vue.js 應用程式的配置示例:
services:
vuejs-prod:
build:
context: .
dockerfile: Dockerfile
image: docker-vuejs-sample
ports:
- "8080:8080"
vuejs-dev:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "5173:5173"
develop:
watch:
- path: ./src
target: /app/src
action: sync
- path: ./package.json
target: /app/package.json
action: restart
- path: ./vite.config.js
target: /app/vite.config.js
action: restart
- `vuejs-prod` 服務使用 Nginx 構建並提供您的靜態生產應用程式。
- `vuejs-dev` 服務執行您的 Vue.js 開發伺服器,支援即時過載和熱模組替換。
watch
觸發與 Compose Watch 的檔案同步。
注意有關更多詳細資訊,請參閱官方指南:使用 Compose Watch。
完成上述步驟後,你的專案目錄現在應該包含以下檔案
├── docker-vuejs-sample/
│ ├── Dockerfile
│ ├── Dockerfile.dev
│ ├── .dockerignore
│ ├── compose.yaml
│ ├── nginx.conf
│ └── README.Docker.md
步驟 4:啟動 Compose Watch
從專案根目錄執行以下命令以在監視模式下啟動容器
$ docker compose watch vuejs-dev
步驟 5:使用 Vue.js 測試 Compose Watch
確認 Compose Watch 正常工作
在文字編輯器中開啟 `src/App.vue` 檔案。
找到以下行
<HelloWorld msg="You did it!" />
更改為
<HelloWorld msg="Hello from Docker Compose Watch" />
儲存檔案。
在瀏覽器中開啟 https://:5173。
你應該會立即看到更新的文字出現,而無需手動重建容器。這確認了檔案監視和自動同步按預期工作。
摘要
在本節中,您使用 Docker 和 Docker Compose 為您的 Vue.js 應用程式設定了完整的開發和生產工作流程。
您取得了以下成果:
- 建立了
Dockerfile.dev
以簡化帶有熱過載的本地開發 - 在 `compose.yaml` 檔案中定義了獨立的 `vuejs-dev` 和 `vuejs-prod` 服務。
- 使用 Compose Watch 啟用了即時檔案同步,以獲得更流暢的開發體驗
- 透過修改和預覽元件驗證了即時更新的無縫工作
透過此設定,您現在可以在容器內完全構建、執行和迭代您的 Vue.js 應用程式——在不同環境中高效且一致。
相關資源
透過這些指南,加深你的知識並改進你的容器化開發工作流
- 使用 Compose Watch – 在開發過程中自動同步源更改
- 多階段構建 – 建立高效、生產就緒的 Docker 映象
- Dockerfile 最佳實踐 – 編寫乾淨、安全和最佳化的 Dockerfile。
- Compose 檔案參考 – 學習在
compose.yaml
中配置服務的完整語法和可用選項。 - Docker 卷 – 在容器執行之間持久化和管理資料
後續步驟
在下一節中,您將學習如何在 Docker 容器中執行 Vue.js 應用程式的單元測試。這確保了所有環境中的一致測試,並消除了對本地機器設定的依賴。