說到容器化,我們就不能不提到 Docker 了,Docker 可以讓我們每個微服務都擁有自己專屬的環境。
除此之外,我們需要倚賴 Kubernetes 來做服務之間互動的大小事,所以把我們的服務包成一個容器,是非常重要的一個步驟。
# Image 套用的基本版本
FROM node:10.22.0-slim AS builder
# 設定環境變數
ARG NODE_ENV
ENV NODE_ENV=${NODE_ENV}
ENV NEW_RELIC_NO_CONFIG_FILE=true
ENV NEW_RELIC_APP_NAME="[${NODE_ENV}] Auth Server"
ENV NEW_RELIC_LICENSE_KEY=""
# 開啟對外的 PORT
EXPOSE 3000
# 查看環境變數設定完成後的結果
RUN env
# 將本地端的套件檔案清單更新到最新版 (非必要)
RUN apt-get update
# 安裝必要套件 (依照你的環境自行配置,非必要)
RUN apt-get install vim -y
# 切換目錄位置
WORKDIR /app
# 複製本地端的檔案到 Image 的 /app 資料夾下
COPY . .
# 安裝必要工具
RUN npm i yarn lerna -g --force
# 安裝所有相依模組
RUN yarn install
# 切換到資料夾
WORKDIR /app/packages/auth-server
# 啟動 App
CMD npm start