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