DigitalOcean 是一個雲平台,提供一系列用於構建和部署應用程序的服務。
在本指南中,我們將使用 Dockerfile 將 Bun HTTP 服務器部署到 DigitalOcean。
NOTE
在繼續之前,請確保你已具備:- 一個准備部署的 Bun 應用程序
- 一個 DigitalOcean 賬戶
- 已安裝和配置的 DigitalOcean CLI
- 已安裝並添加到
PATH的 Docker
創建新的 DigitalOcean 容器倉庫
創建一個新的容器倉庫來存儲 Docker 鏡像。
通過 DigitalOcean 控制台
在 DigitalOcean 控制台中,前往 Container Registry,然後輸入新倉庫的詳細信息。
確保詳細信息正確,然後點擊 創建倉庫。
通過 DigitalOcean CLI
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2你應該在 DigitalOcean 倉庫控制台 中看到新倉庫:
創建新的 Dockerfile
確保你在包含項目的目錄中,然後在項目根目錄創建一個新的 Dockerfile。此文件包含初始化容器、將本地項目文件復制到其中、安裝依賴項和啟動應用程序的指令。
# 使用官方 Bun 鏡像來運行應用程序
FROM oven/bun:debian
# 將工作目錄設置為 `/app`
WORKDIR /app
# 將 package.json 和 bun.lock 復制到容器中
COPY package.json bun.lock ./
# 安裝依賴項
RUN bun install --production --frozen-lockfile
# 將應用程序的其余部分復制到容器中
COPY . .
# 暴露端口(DigitalOcean 將設置 PORT 環境變量)
EXPOSE 8080
# 運行應用程序
CMD ["bun", "index.ts"]NOTE
確保啟動命令對應於你的應用程序的入口點。如果你在 `package.json` 中有啟動腳本,這也可以是 `CMD ["bun", "run", "start"]`。此鏡像在容器內使用 Bun 安裝依賴項並運行你的應用程序。如果你的應用程序沒有依賴項,你可以省略 RUN bun install --production --frozen-lockfile 行。
在項目根目錄創建一個新的 .dockerignore 文件。此文件包含應從容器鏡像中排除的文件和目錄,例如 node_modules。這會使你的構建更快、更小:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 任何其他你想要排除的文件或目錄使用 DigitalOcean 倉庫進行 Docker 身份驗證
在構建和推送 Docker 鏡像之前,使用 DigitalOcean 容器倉庫對 Docker 進行身份驗證:
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
此命令使用你的 DigitalOcean 憑據對 Docker 與 DigitalOcean 的倉庫進行身份驗證。如果沒有此步驟,構建和推送命令將因 401 身份驗證錯誤而失敗。構建並將 Docker 鏡像推送到 DigitalOcean 倉庫
確保你在包含 Dockerfile 的目錄中,然後在一個命令中構建並將 Docker 鏡像推送到 DigitalOcean 倉庫:
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .NOTE
如果你正在 ARM Mac(M1/M2)上構建,你必須使用帶有 `--platform=linux/amd64` 的 `docker buildx` 以確保與 DigitalOcean 基礎設施的兼容性。不使用平台標志的 `docker build` 將創建無法在 DigitalOcean 上運行的 ARM64 鏡像。鏡像推送後,你應該在 DigitalOcean 倉庫控制台 中看到它:
創建新的 DigitalOcean App Platform 項目
在 DigitalOcean 控制台中,前往 App Platform > 創建應用。我們可以直接從容器鏡像創建項目。
確保詳細信息正確,然後點擊 下一步。
審查和配置資源設置,然後點擊 創建應用。
訪問你的實時應用程序
🥳 你的應用程序現已上線!創建應用後,你應該在 App Platform 控制台中看到它以及公共 URL。