在上一篇中已經說明了如何開發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,這是我覺得最方便的地方

安裝方式很簡單

可以裝在global環境中即可,而像本次是在docker環境中的話我就直接寫在Dockerfile中

啟動指令

其中 -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中看到

安裝了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中的設定