[nodejs/npm] 基於Docker建立Nodejs前端應用

千千寰宇發表於2024-03-21

0 序

1 建立過程

Step1 建立前端應用工程

工程的原始碼目錄如下

/data/nodejs/node-demo-app
---- app.js
---- Dockefile

Step1.1 編輯app.js

mkdir -p /data/nodejs/node-demo-app

vi /data/nodejs/node-demo-app/app.js

app.js 的檔案內容如下:

const express = require('express')
const mongoose = require('mongoose');

const app = express();

app.get('/', (req, res) => {
   res.send('Yayyy!! Containers are a piece of cake');
});

app.listen(3000, () => {
   console.log('Container running with db connection');
});

Step1.2 編輯Dockfile

vi /data/nodejs/node-demo-app/Dockerfile

檔案內容如下:

# 指定node版本為21.7.1 | 注: 需要提前下載node 21.7.1 的映象(docker pull node:12.7.1 / docker pull node:14 / ...)
FROM node:21.7.1

# 專案在docker裡面的工作目錄,/app 只是隨意指定的目錄而已
WORKDIR /app

# 把當前目錄(第1個.)下的所有檔案新增到docker裡面的 /app  目錄
COPY . .

# build docker 映象時執行npm命令。這一步是在docker裡面跑的命令
# RUN npm install
# 透過 npm init 生成 /app/package.json 等npm所需的配置檔案;否則沒有 /app/package.json 時構建映象會失敗
RUN npm init -y
# 新增業務原始碼 app.js 中所需的依賴元件 : express / mongoose , 並透過--save 指令新增到 package.json 的 dependency 中
RUN npm install express --save
RUN npm install mongoose --save

EXPOSE 3000

# CMD [ "node", "app.js" ]
# 或等效於:
CMD node app.js

Step2 安裝 Dockerfile 所需的基礎映象

docker pull node:21.7.1

docker images

Step3 基於Dockerfile構建應用映象

cd /data/nodejs/node-demo-app
docker build -t node-demo-app:latest -t node-demo-app:1.0.0 .

[x] 或 :docker build -f /data/nodejs/node-demo-app/Dockerfile -t node-demo-app:latest -t node-demo-app:1.0.0 .
[x] 或 : docker build .
  • -t : 新增標籤(支援新增多個標籤)
  • -f : 手動指定Dockerfile檔案的路徑

構建映象完成後,檢視一下:

docker images

Step4 基於應用映象,建立並執行容器

docker run --name node-demo-app-1 -d -p 8000:3000 node-demo-app:1.0.0
docker ps -a 
docker logs node-demo-app-1

Step5 驗證

curl -v -XGET http://127.0.0.1:8000

  • 檢視容器內的目錄情況
docker exec -it node-demo-app-1 sh -c "ls -la /app"

docker exec -it node-demo-app-1 sh -c "ls -la /"

StepX 停止執行容器、刪除映象 [可選]

docker stop node-demo-app-1
docker rm node-demo-app-1
docker rmi node-demo-app:1.0.0

docker images | grep -i node-demo-app

X 參考文獻

  • docker
  • https://hub-stage.docker.com/_/node/tags
  • https://hub-stage.docker.com/layers/library/node/21.7.1/images/sha256-ca75f977b1c9e9a2cc5480efe5b7df07ce38373316e30b91eeadddb6a025b8a8?context=explore
  • 容器化初學者:使用 Docker 執行 nodeJS 應用程式 - devpress.csdn.net 【推薦】
  • docker簡單執行nodejs應用 - jianshu 【推薦】
  • docker啟動node.js專案 - 部落格園/千千寰宇 【推薦】
  • [npm] NPM入門教程 - 部落格園/千千寰宇 【推薦】
  • [nodejs] NodeJs入門教程 - 部落格園/千千寰宇 【推薦】
  • [Docker] Docker 基礎教程(概念/原理/基礎操作) - 部落格園/千千寰宇 【推薦】
  • Dockerfile / ...
  • npm init -y nodejs -CSDN 【推薦】
  • Error: Cannot find module ‘express‘ - CSDN
  • 在伺服器上部署後端時 SyntaxError: Unexpected token '??=' - jdk5.com

相關文章