🔧 用 Podman 建立並部署 Vue 專案:從打包、Dockerfile 撰寫到 Nginx 靜態檔案服務
🚀 前言:Vue 要部署在 Podman 容器中,有哪些坑?
在企業級開發流程中,使用 Docker(或無 root 權限時的 Podman)來部署 Vue.js 應用,是非常普遍的 DevOps 實作。但在實作中常會遇到一些 常見問題點:
-
nginx: not found
? -
COPY dist to nginx/html
報錯? -
Vue 無法
build
? -
App.vue 匯入檔案路徑錯誤?
這篇文章將從頭到尾完整紀錄如何使用 Podman 建立 Vue 專案容器、修正 build 時的常見錯誤,並成功透過 Nginx 提供靜態檔案服務。
🏗️ 專案結構說明
Vue 專案目錄結構如下:
🛠️ 關鍵修正一:App.vue 引用路徑錯誤
原本你在
src/App.vue
中寫了以下匯入:
但實際上你的 views/
資料夾是在
src
外層,應改成:
或者建議在 jsconfig.json
補上:
然後改成:
避免 Docker build 出現
Module not found: Can't resolve
錯誤。
🐳 Dockerfile 編寫與解說(兩階段建構)
📃 nginx.conf 配置(重點)
🔁 容器操作流程(Podman 指令)
接著在瀏覽器開啟:
http://localhost:8080
✅
❌ 常見錯誤與解決方式
錯誤訊息 | 原因 | 解決方式 |
---|---|---|
nginx: not found
|
build 階段執行
nginx ,但並未安裝
|
不需要執行 nginx,移除
nginx -s reload
|
Can't resolve './views/Home.vue'
|
vue 引用路徑錯誤 | 修改成正確的相對或 alias 路徑 |
/usr/share/nginx/html not found
|
容器中 nginx 尚未裝好或使用錯 image |
使用
nginx:stable-alpine
的 base image
|
cp: target not a directory
|
容器中沒該路徑 | 不要手動 cp,用 Dockerfile COPY 即可 |
✅ 成功畫面確認與驗證
當容器啟動成功後:
顯示:
即可開啟網頁瀏覽你的 Vue App!
🧠 小結:部署 Vue + Podman 的黃金準則
-
Dockerfile 拆為兩階段:build + Nginx
-
Vue 的
import
路徑需正確 -
Nginx 提供靜態檔案服務需配 nginx.conf
-
Podman 等同 Docker 指令,但無 root 權限
留言
張貼留言