[教學] 使用Docker建立Nodejs開發環境範本
大綱 前言 為什麼要用Docker部屬 Node.js (Express.js) 建置流程Ver 1(快速克隆 -> 趕時間) 建置流程Ver 2 (手動 -> 練習過程) node-demo/app/package.json node-demo/app/src/index.js node-demo/docker-compose.yaml 資料夾結構 docker-compose建置說明 version services app (實際上可以取你自己喜歡的名稱web-app之類的) 結語 前言 最近想紀錄一下可重複使用的程式碼片段,這樣之後找就從自己的部落格找會比較方便,尤其是最近常用Docker建立部屬環境。 想看docker-compose建置Express + MYSQL環境,請走這 為什麼要用Docker部屬 雖然網路上可以找到很多理由,但我的理由是: 使用git版本控制,設定檔本身就取代環境建置說明文件 不弄髒本地環境,想刪就刪 替換依賴容易,Ex: MySQL -> Postgresl Docker基本上語法不複雜設定起來也很容易,尤其在建立不熟悉的環境亂試也可以, 且因為Docker有cache layer的關係,所以修改重新跑docker-compose up 也很快就可以建立。 廢話不多說,開始部屬吧… Node.js (Express.js) 建置流程Ver 1(快速克隆 -> 趕時間) 直接使用git clone語法下載範例 $ git clone https://github.com/kabuto412rock/node-demo.git --branch express_template --single-branch 啟動服務、關閉服務 # 進到目錄底層 $ cd node-demo # 啟動Docker服務 (node-demo) $ docker-compose up -d # 停止Docker服務 (node-demo) $ docker-compose down 檢查實際結果 http://localhost/ 建置流程Ver 2 (手動 -> 練習過程) 建立相關的檔案&安裝Express(主要是為了產生package.json) $ mkdir -p node-demo/app/src $ cd node-demo $ touch app/package.json && touch app/src/index.js && touch docker-compose.yaml 複製以下程式碼貼到對應的檔案 node-demo/app/package.json { "name": "node-demo", "version": "1.0.0", "main": "index.js", "scripts": { "start": "nodemon src/index.js" }, "license": "MIT", "dependencies": { "express": "^4.17.3" }, "devDependencies": { "nodemon": "^2.0.15" } } node-demo/app/src/index.js const express = require("express"); const port = 8000; const app = express(); app.get("/", (req, res) => { res.status(200).json({ message: "Hello", }); }); app.listen(port); node-demo/docker-compose.yaml version: '3.1' services: app: image: node:16-alpine command: sh -c "yarn install && yarn run start" ports: - 80:8000 working_dir: /app volumes: - './app/src:/app/src' - './app/package.json:/app/package.json' - './app/yarn.lock:/app/yarn.lock' 啟動服務、關閉服務 # 進到目錄底層 $ cd node-demo # 啟動Docker服務 (node-demo) $ docker-compose up -d # 停止Docker服務 (node-demo) $ docker-compose down 檢查實際結果 http://localhost/ 資料夾結構 ├── app │ ├── package.json │ ├── src │ │ └── index.js │ └── yarn.lock └── docker-compose.yaml docker-compose建置說明 說明一下docker-compose.yaml內的細節,因為這些設定的屬性都是docker-compose up時參考的定義,一定要了解一下。 ...