Skip to content

DigitalOcean 是一个云平台,提供一系列用于构建和部署应用程序的服务。

在本指南中,我们将使用 Dockerfile 将 Bun HTTP 服务器部署到 DigitalOcean。

NOTE

在继续之前,请确保你已具备:

创建新的 DigitalOcean 容器仓库

创建一个新的容器仓库来存储 Docker 镜像。

通过 DigitalOcean 控制台

在 DigitalOcean 控制台中,前往 Container Registry,然后输入新仓库的详细信息。

确保详细信息正确,然后点击 创建仓库

通过 DigitalOcean CLI
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

你应该在 DigitalOcean 仓库控制台 中看到新仓库:

创建新的 Dockerfile

确保你在包含项目的目录中,然后在项目根目录创建一个新的 Dockerfile。此文件包含初始化容器、将本地项目文件复制到其中、安装依赖项和启动应用程序的指令。

docker
# 使用官方 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。这会使你的构建更快、更小:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 任何其他你想要排除的文件或目录

使用 DigitalOcean 仓库进行 Docker 身份验证

在构建和推送 Docker 镜像之前,使用 DigitalOcean 容器仓库对 Docker 进行身份验证:

bash
doctl registry login
txt
Successfully authenticated with registry.digitalocean.com

NOTE

此命令使用你的 DigitalOcean 凭据对 Docker 与 DigitalOcean 的仓库进行身份验证。如果没有此步骤,构建和推送命令将因 401 身份验证错误而失败。

构建并将 Docker 镜像推送到 DigitalOcean 仓库

确保你在包含 Dockerfile 的目录中,然后在一个命令中构建并将 Docker 镜像推送到 DigitalOcean 仓库:

bash
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。

Bun学习网由www.bunjs.com.cn整理维护