工作上用到的Dockerfile

為何會有這篇?

由於目前公司網站都是放在GCP的(還有一些是在Azure,不過目前都在慢慢遷移了)

簡單來說,會有這篇的原因是即使我是前端,還是有要自己設定一些dockerfile nginx的情況

不過即使到現在,我認為不是一個很好的狀態,因為我碰到要寫docker or nginx的時候

就是打開過去類似的專案然後copy XDD

不過當然

寫到現在也碰過很多次,甚至是有一些以前沒有遇過的狀況,這時候就會需要自己真的去寫這些file了

但你說我因此會寫了嗎?

我認為是否定的

基本上也都是based on 之前的設定檔做一些改寫

也就是因為為什麼會有這篇,我想要趁我想到這件事的時候,梳理一下這些邏輯

專案如何部署的?

我們公司會有好幾台GCP虛擬環境

而要在哪一台放哪些專案這個問題目前我都是會跑去跟後端他們確認

我的認知是這台GCP的ip的某個port要對應的哪一個domain

我們再透過docker + nginx 去把port號對出去,讓使用者訪問

How do React and Next work with docker ?

基本上我們公司前端專案撇除過去老舊專案

現在的專案都是由這兩個框架去做的

那使用的基準不外乎就是我們前端team會去評估

React

目前是有兩種方式

第一種,在docker node image build完專案

再把這個在node image build好的檔案(dist)丟到nginx image裡面的/var/www/html路徑

讓nginx server去抓裡面的index.html

在用docker compose 去對port號,就可以成功對外這個nginx server給使用者了

第二種,其實大同小異,差異就是讓docker做比較少事情

我自己在本地端build完成,把dist推到repo上,並在GCP機器上pull下來

docker只會建立nginx的image,然後docker會複製我在local build好的dist資料夾到nginx的/var/www/html路徑

後面就一樣,nginx會去抓dist裡面的index.html後,用docker compose把port號對出去就完成了

Next

Next是經過請教公司意一個資深的同事才知道簡單那麼多

因為next本身就是一個server,因此他不需要再利用docker去建立一個nginx的image

因此只需要在node image裏面啟動server,再將該server的port號由docker compose對出去就可以了!