容器化 Deno 應用程式
先決條件
- 您有一個 Git 客戶端。本節中的示例使用基於命令列的 Git 客戶端,但您可以使用任何客戶端。
概述
長期以來,Node.js 一直是伺服器端 JavaScript 應用程式的首選執行時。然而,近年來引入了新的替代執行時,包括 Deno。與 Node.js 類似,Deno 也是一個 JavaScript 和 TypeScript 執行時,但它採用了全新的方法,具有現代安全功能、內建標準庫和對 TypeScript 的原生支援。
為什麼使用 Docker 開發 Deno 應用程式?擁有多種執行時選擇令人興奮,但在不同環境中一致地管理多種執行時及其依賴項可能會很棘手。這就是 Docker 彌足珍貴之處。使用容器按需建立和銷燬環境簡化了執行時管理並確保了一致性。此外,隨著 Deno 的不斷發展和演進,Docker 有助於建立可靠且可重現的開發環境,最大限度地減少設定挑戰並簡化工作流程。
獲取示例應用程式
克隆示例應用程式以配合本指南使用。開啟終端,將目錄更改到您要工作的目錄,然後執行以下命令克隆儲存庫:
$ git clone https://github.com/dockersamples/docker-deno.git && cd docker-deno
現在,您的 deno-docker
目錄中應該包含以下內容。
├── deno-docker/
│ ├── compose.yml
│ ├── Dockerfile
│ ├── LICENSE
│ ├── server.ts
│ └── README.md
理解示例應用程式
示例應用程式是一個簡單的 Deno 應用程式,它使用 Oak 框架建立一個簡單的 API,返回 JSON 響應。該應用程式監聽埠 8000,當您在瀏覽器中訪問該應用程式時,會返回訊息 {"Status" : "OK"}
。
// server.ts
import { Application, Router } from "https://deno.land/x/oak@v12.0.0/mod.ts";
const app = new Application();
const router = new Router();
// Define a route that returns JSON
router.get("/", (context) => {
context.response.body = { Status: "OK" };
context.response.type = "application/json";
});
app.use(router.routes());
app.use(router.allowedMethods());
console.log("Server running on https://:8000");
await app.listen({ port: 8000 });
建立 Dockerfile
在 Dockerfile 中,您會注意到 FROM
指令使用 denoland/deno:latest
作為基礎映象。這是 Deno 的官方映象。此映象可在 Docker Hub 上獲取。
# Use the official Deno image
FROM denoland/deno:latest
# Set the working directory
WORKDIR /app
# Copy server code into the container
COPY server.ts .
# Set permissions (optional but recommended for security)
USER deno
# Expose port 8000
EXPOSE 8000
# Run the Deno server
CMD ["run", "--allow-net", "server.ts"]
除了指定 denoland/deno:latest
作為基礎映象外,Dockerfile 還包含:
- 將容器中的工作目錄設定為
/app
。 - 將
server.ts
複製到容器中。 - 將使用者設定為
deno
,以非 root 使用者身份執行應用程式。 - 暴露埠 8000 以允許流量訪問應用程式。
- 使用
CMD
指令執行 Deno 伺服器。 - 使用
--allow-net
標誌允許應用程式進行網路訪問。server.ts
檔案使用 Oak 框架建立了一個簡單的 API,監聽埠 8000。
執行應用程式
確保您位於 deno-docker
目錄中。在終端中執行以下命令以構建並執行應用程式。
$ docker compose up --build
開啟瀏覽器並訪問 https://:8000 檢視應用程式。您將在瀏覽器中看到訊息 {"Status" : "OK"}
。
在終端中,按 ctrl
+c
停止應用程式。
在後臺執行應用程式
您可以透過新增 -d
選項將應用程式與終端分離執行。在 deno-docker
目錄中,在終端中執行以下命令。
$ docker compose up --build -d
開啟瀏覽器並訪問 https://:8000。
在終端中,執行以下命令以停止應用程式。
$ docker compose down
摘要
在本節中,您學習瞭如何使用 Docker 將 Deno 應用程式容器化並執行。
相關資訊
後續步驟
在下一節中,您將學習如何使用容器開發您的應用程式。