Docker - 設置 Node.js:初學者指南

你好啊,有志的開發者們!今天,我們將踏上一段令人興奮的旅程,進入 Docker 和 Node.js 的世界。作為你們友好的鄰居計算機老師,我會一步步地引導你們走過這次冒險。別擔心你們對編程是新手——我們會從最基本的知識開始,然後逐步學習。所以,來一杯咖啡(或者如果你喜歡,來一杯茶),我們一起來投入這個領域!

Docker - Setting Node.js

什麼是 Docker?

在我們深入細節之前,讓我們先來聊聊 Docker。想像你正在搬進一個新家。如果你可以把所有的東西都放在標準化的容器中,這些容器能夠完美地放在任何卡車或船上,而不是用不同形狀和大小的盒子打包,會怎麼樣?Docker 對軟件做的就是這樣的事情!

Docker 是一個平台,讓你可以將你的應用程序和所有相依性打包成一個叫做容器的標準化單位。這些容器可以在任何系統上持續運行,使得開發、運輸和運行應用程序更加容易。

為什麼要在 Node.js 中使用 Docker?

現在,你可能會想,"為什麼我要為我的 Node.js 應用程序麻煩 Docker 呢?" 讓我給你講一個小故事。

從前,有一個叫做 Sarah 的開發者。她在她的筆記本電腦上建立了一個出色的 Node.js 應用程序。它運行得非常好!但是當她試著在她的團隊伺服器上運行它時,它崩潰了。問題是什麼呢?Node.js 的不同版本和一些缺失的相依性。Sarah 花了幾天時間來試圖修復它。

如果 Sarah 使用了 Docker,她可以避免這個頭痛。Docker 保證你的應用程序在到處運行的環境都是一樣的——無論是在你的筆記本電腦上,同事的桌面上,還是雲中的伺服器。

為 Node.js 設置 Docker

好啦,讓我們捋起袖子,親自動手設置一下吧!

步驟 1:安裝 Docker

首先,我們需要在我們的電腦上安裝 Docker。前往 Docker 官方網站 下載適合你操作系統的 Docker Desktop。按照安裝指示操作,然後你就可以開始了!

步驟 2:創建一個 Node.js 應用程序

讓我們創建一個簡單的 Node.js 應用以便容器化。為你的專案創建一個新目錄並進入它:

mkdir my-node-app
cd my-node-app

現在,讓我們創建一個簡單的 package.json 檔案:

npm init -y

這個命令會創建一個帶有默認值的基礎 package.json 檔案。接下來,讓我們安裝 Express,一個流行的 Node.js 框架:

npm install express

現在,創建一個名為 app.js 的文件並添加以下代碼:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
res.send('Hello, Docker!');
});

app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});

這個簡單的應用程序會創建一個網絡伺服器,當你訪問根網址時會回應 "Hello, Docker!"。

步驟 3:創建一個 Dockerfile

現在來到令人興奮的部分——創建我們的 Dockerfile!Dockerfile 就像一個告訴 Docker 如何構建我們容器的配方。在你的專案目錄中創建一個名為 Dockerfile(沒有副檔名)的文件並添加以下內容:

# 使用官方的 Node 執行環境作為父映像
FROM node:14

# 設置容器中的工作目錄
WORKDIR /usr/src/app

# 拷貝 package.json 和 package-lock.json
COPY package*.json ./

# 安裝相依性
RUN npm install

# 拷貝其餘的應用程序代碼
COPY . .

# 將端口 3000 設為容器外部可訪問
EXPOSE 3000

# 定義運行應用的命令
CMD [ "node", "app.js" ]

讓我們來分解這個:

  • FROM node:14:這指定了我們使用的基礎映像——這裡是 Node.js 版本 14。
  • WORKDIR /usr/src/app:這設置容器內的工作目錄。
  • COPY package*.json ./:這將我們的 package.json 檔案複製到容器中。
  • RUN npm install:這在容器內安裝相依性。
  • COPY . .:這將我們應用程序的其餘代碼複製到容器中。
  • EXPOSE 3000:這將端口 3000 設為外部可訪問。
  • CMD [ "node", "app.js" ]:這指定了我們應用的運行命令。

步驟 4:構建和運行 Docker 容器

現在到我們有了 Dockerfile,讓我們來構建我們的 Docker 映像:

docker build -t my-node-app .

這個命令會構建一個 Docker 映像並標記為 my-node-app。結尾的 . 告訴 Docker 在當前目錄中尋找 Dockerfile。

構建完成後,我們可以運行我們的容器:

docker run -p 3000:3000 my-node-app

這個命令會運行我們的容器並將容器中的端口 3000 映射到主機上的端口 3000。

恭喜你們!現在應該能夠在網頁瀏覽器中訪問 http://localhost:3000 並看到 "Hello, Docker!"。

常見 Docker 命令

這裡有一個常用 Docker 命令的便捷表格,你會發現它們很有用:

命令 描述
docker build 從 Dockerfile 構建 Docker 映像
docker run 運行 Docker 容器
docker ps 列出運行中的容器
docker stop 停止運行的容器
docker rm 刪除容器
docker images 列出 Docker 映像
docker rmi 刪除 Docker 映像
docker logs 查看容器的日誌

結論

這就是了,各位!我們成功地使用 Docker 設置了一個 Node.js 應用程序。我們學習了 Docker 是什麼,為什麼它有用,以及如何為 Node.js 應用程序創建和運行 Docker 容器。

記住,就像學習任何新技能一樣,精通 Docker 需要練習。如果第一次事情不完美,不要氣餒。持續嘗試,在你知覺之前,你會像專家一樣 dockerize 應用程序!

當我們結束時,我想要跟你們分享一個小秘密。當我第一次開始使用 Docker 時,我意外地輸入了 docker run 而不是 docker build,然後花了一個小時想不通為什麼我的改變沒有出現。我們都會犯錯誤——這是我們學習的方式!

繼續編碼,持續學習,最重要的是,享受其中的樂趣!下次見,快樂 dockerize!

Credits: Image by storyset