iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
Kubernetes

從Docker到Kubernetes-新手入門筆記系列 第 8

Day8-Dockerize Node.js Web應用程式(上)

今天用的node.js應用程式為nest.js

git clone下來,在該目錄下新增Dockerfile。

要把node.js應用程式包成image,流程跟前兩天手動安裝redis一樣,修改Dockerfile:

#安裝base image
FROM alpine
#安裝node.js套件
RUN npm install
#啟動應用程式
CMD ["npm", "start"]

Guess what....

找不到npm可執行檔,因為alpine是只有最compact的linux kernel,並沒有包含node.js runtime及npm應用程式,我們可以像手動安裝node.js,或是直接到Docker Hub找offical node.js的image來用

有不同的node version stable images可以下載:

# 安裝v10
FROM node:alpine

# 安裝v8
FROM node:8-alpine

如果點10/alpine/Dockerfile連結可以知道怎麼從alpine開始,安裝node.js,另外node alpine image已經一併安裝好yarn套件管理員

修改Dockerfile

#安裝base image
FROM alpine
#安裝node.js套件
RUN npm install
#啟動應用程式
CMD ["npm", "start"]

找不到package.json,雖然有看到Sending build context to Docker daemon 44.03kB,但沒有下COPY instruction,並不會把檔案copy進container。

新增COPY instruction

# 選擇node:alpine
FROM node:alpine

# copy 指定檔案及資料夾進container
# copy 根目錄
COPY ./ ./

# copy src資料夾
COPY src src
# copy test資料夾
COPY test test

# 安裝dependencies
RUN npm install

# 指定啟動container後執行命令
CMD ["npm", "start"]

docker run 45832312edcf

可以看到nest.js應用程式已啟動

打開瀏覽器輸入localhost:3000

找不到伺服器,是因為還沒作port mapping

明天繼續。


上一篇
Day7-dockerfile入門-自訂image(下)
下一篇
Day9-Dockerize Node.js Web應用程式(下)
系列文
從Docker到Kubernetes-新手入門筆記30

尚未有邦友留言

立即登入留言