今天的內容是關於開發環境的準備,我會跳過安裝程式之類的部分,因為這些教學網路上已經很多了。
重新檢視一下目標,我們需要 Node.js 跟資料庫。
為了避免資料庫安裝的麻煩以及增加可攜性,我們選擇使用 Docker 容器技術來處理環境。
首先,我們需要一個簡單的 Dockerfile
來建立我們的開發容器。
FROM node:latest as dev
RUN npm i -g pnpm
WORKDIR /app
這個 Dockerfile
會建立一個 Node.js 的開發環境,並且安裝 pnpm
作為套件管理工具。
PNPM 是一個優於 NPM 跟 Yarn 的套件管理工具,它有良好的依賴鏈結模式,也可作為 Node.js 的版本管理工具。
接著,我們需要一個 docker-compose.yml
來管理我們的開發容器以及資料庫容器,未來還會加上部署時的容器。
version: "3.9"
services:
dev:
build:
context: .
target: dev
image: jacoblincool/pure-cat:dev
container_name: pure-cat-dev
command: sleep infinity
volumes:
- .:/app
depends_on:
- db
db:
image: mongo:latest
container_name: pure-cat-db
ports:
- "27017:27017"
volumes:
- db-storage:/data/db
volumes:
db-storage: {}
這個 docker-compose.yml
會建立兩個容器,一個是開發容器,一個是資料庫容器。
其中,開發容器會使用我們剛剛建立的 Dockerfile
來建立,並且掛載當前目錄到容器的 /app
上。而資料庫容器則是使用官方的 MongoDB Image 建立,並且掛載一個 Docker Volume 到容器的 /data/db
上。
我們現在可以使用 docker compose up -d dev
來啟動開發環境,並在啟動後使用 docker compose exec -it dev bash
來進入開發容器。
在容器內安裝我們(也許會)需要的套件吧!
root@f4bcd692f002:/app# pnpm i
Scope: all 2 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +464
++++++++++++++++++++++++++++++++++++++++
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: /app/.pnpm-store/v3
Virtual store is at: node_modules/.pnpm
Downloading registry.npmjs.org/typescript/4.8.3: 11.9 MB/11.9 MB, done
Progress: resolved 464, reused 0, downloaded 464, added 464, done
node_modules/.pnpm/esbuild@0.15.3/node_modules/esbuild: Running postinstall script, done in 468ms
node_modules/.pnpm/esbuild@0.14.54/node_modules/esbuild: Running postinstall script, done in 463ms
devDependencies:
+ @types/jest 28.1.8
+ @types/node 18.7.18
+ @types/node-fetch 2.6.2
+ @types/serve-handler 6.1.1
+ @typescript-eslint/eslint-plugin 5.37.0
+ @typescript-eslint/parser 5.37.0
+ eslint 8.23.1
+ eslint-config-prettier 8.5.0
+ esno 0.16.3
+ jest 28.1.3
+ node-fetch 2.6.7
+ prettier 2.7.1
+ serve-handler 6.1.3
+ ts-jest 28.0.8
+ tsup 6.2.3
+ typedoc 0.23.14
+ typescript 4.8.3
今天寫到一半碰巧遇上地震,考慮加個地震模組。
以 2022/09/17 01:00 ~ 2022/09/17 20:00 文章觀看數增加值排名
誤差: 1 小時
+145
「全端挑戰」學習Mern全端開發概念與動態網站開發流程懶人包
+117
是獵人就要來做獵人燉肉阿-波蘭國民菜 - 獵人燉肉Bigo
+111
Day 17: 寫在當下 - SIEM 與 MSS/MDR 的關聯
+105
Actor Model, Virtual Actor Model以及Orleans提供API的基本單元概念解釋
+101
React白話文運動01-介紹
+93
如何製作月曆 date grid 【 calendar | 我不會寫 React Component 】
+89
[Kotlin 全面啟動] 序
+84
導讀【 我不會寫 React Component 】
+83
Day-13 被引導的人們-勇者鬥惡龍IV
+82
專案建置【 我不會寫 React Component 】
哇!React!滿街都是 React!
您好,我是來學習如何製作您的Discord bot的
想請問一下Dockerfile可以在win10的環境下使用嗎
若要使用dDockerfile這個開發容器需要事前安裝甚麼呢
謝謝
Docker 是可以在 Windows 環境下使用的,可以到官方網站下載 Docker Desktop。
好的 謝謝您百忙之中抽空回覆
感謝您
推荐您用一下vscode从容器中启动。使用可以参考这个视频
oh-my-docker 使用教程
希望对您有所帮助。
您好,我觉得您这样直接在docker容器内,纯命令行写代码对新手不太友好。推荐您用一下vscode从容器中启动。使用可以参考这个视频
oh-my-docker 使用教程
希望对您有所帮助。
身為一個 VS Code 愛好者,我都盡量避免使用 Vim 或類似編輯器。
事實上,我其實是把當下目錄綁進容器內而已,還是使用 Host 上的 VS Code 寫程式。
之所以不使用 dev container 的原因是因為我希望能與資料庫容器在同個網路上,並且盡量減少與部署環境的差異性。