[教學] 使用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時參考的定義,一定要了解一下。 ...

April 3, 2022 · 2 min · 宗嘉

[Debug過程] 學Hugo並發布到Github page

前言 如果你正在尋找一篇Hugo建立GithubPag的教學文,請你繼續搜尋其他文章, 因為這是我第一次使用Hugo跌跌撞撞的除錯紀錄, 而大部分問題都是我自己不照教學走導致需要Debug的文章, 但如果想知道怎麼出錯解錯就繼續看下去,但不建議跟著做下去。 Bug1 前幾次hugo server -D啟動正常,後來卻出錯? 本來想說安裝extended版本比較好,所以重新用snap安裝穩定版, 結果啟動伺服器得到以下結果: hugo v0.89.4 linux/amd64 BuildDate=2021-11-17T14:49:26Z Error: Error building site: TOCSS: failed to transform "ananke/css/main.css" (text/css). Check your Hugo installation; you need the extended version to build SCSS/SASS.: this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information Built in 14 ms 我是在Ubuntu的環境下用 snap install hugo安裝Hugo, 而錯誤的原因是用extended版產生部落格,後面又重新切換Hugo穩定版, 但原本的部落格資料需要SCSS/SASS的支援所以才會出現這樣的錯誤。 解法 因為懶得重新生成檔案,乾脆就用SCSS版本的Hugo: snap remove hugo snap install hugo --channel=extended 或是使用官方提供的方法切換版本: snap refresh hugo --channel=extended 產生一個GithubPage的儲存庫 基本上遇到的問題也只有上面的版本問題, 接著一路照著官方教學建立文章看結果, 最後使用hugo -D 建立靜態的HTML檔案,確認public資料夾是否產生資料。 ...

November 27, 2021 · 2 min · 宗嘉