在上一篇中已經說明了如何開發laravel+Nuxt前後端分離
http://www.alvinchen.club/2020/07/17/laravel-nuxt%e5%bf%ab%e9%80%9f%e4%b8%8a%e6%89%8b/
接下來要說明的部分是如何在docker中部署專案
我們知道在開發模式中可以透過npm run dev來開說3000port除錯模式,而開發完成後需要職行
npm run build編譯專案以及npm run start 就可以把自帶的node js伺服器打開
但是,如果在正式的伺服器上每次都要特別去開node js伺服器確實有點麻煩
這次要說明的是透過pm2來管理nodejs,應用的環境在docker-compose中
讓我們可以做到docker-compose up -d 在叫起docker的同時自動啟動Nuxt
PM2
pm2是一套nodejs的管理工具,除了可以幫我們開關nodejs server以外,還可以做到cluster,這是我覺得最方便的地方
安裝方式很簡單
1 |
npm install pm2 |
可以裝在global環境中即可,而像本次是在docker環境中的話我就直接寫在Dockerfile中
啟動指令
1 |
pm2 start -i 2 npm --name 'nuxt' -- run start |
其中 -i 的部分是指cluster的數量,可以依照伺服器核心數來自動
–name 中需要填入nuxt專案中package.json中的‘’name
完整的docker-compose環境可以參考我的github
https://github.com/virtualorz/docker_compose_for_nuxt.git
這個環境是php7.3的laravel環境 + mysql5.7 以及nginx
可以在php73_laravel的Dockerfile中看到
1 2 |
RUN npm i -g pm2 EXPOSE 3000 |
安裝了pm2並且把3000 port expose出來
最後可以在docker-compose.yml中看到
php73_laravel的command中,加入了pm2 start讓,docker啟動時可以一併叫起Nuxt
port的部分,把80轉到內部的3000
以及,8081轉到內部的80 port 讓laravel API可以正確運作
這時候只要docker-compose up -d 就可以直接access到Nuxt以及8081 port可以access到API的部分,實際狀況可以依照需求自行調整docker-compose.yml中的設定