Skip to main content
DigitalOcean 是一个云平台,提供多种构建和部署应用的服务。 在本指南中,我们将使用 Dockerfile 将 Bun HTTP 服务器部署到 DigitalOcean。
继续之前,请确保您已经:

1

创建一个新的 DigitalOcean 容器注册表

创建一个新的容器注册表以存储 Docker 镜像。
在 DigitalOcean 控制面板中,进入 容器注册表,并填写新注册表的详细信息。
DigitalOcean 注册表控制面板
确认信息无误后,点击 创建注册表
你应该能在 DigitalOcean 注册表控制面板 看到新的注册表:
DigitalOcean 注册表控制面板
2

创建新的 Dockerfile

确保你位于包含项目的目录,然后在项目根目录创建一个新的 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"]
确保启动命令对应你的应用入口文件。如果你在 package.json 中配置了 start 脚本,也可以使用 CMD ["bun", "run", "start"]该镜像会在容器内用 Bun 安装依赖并运行你的应用。如果你的应用没有依赖,可以省略 RUN bun install --production --frozen-lockfile 这一行。
在项目根目录创建一个新的 .dockerignore 文件。该文件用于排除不需要添加进镜像的文件和目录,比如 node_modules。这能让构建更快且镜像更小:
.dockerignore
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 其他你想排除的文件或目录
3

用 Docker 验证登录 DigitalOcean 注册表

在构建和推送 Docker 镜像之前,先用 Docker 认证登录 DigitalOcean 容器注册表:
terminal
doctl registry login
Successfully authenticated with registry.digitalocean.com
此命令使用你的 DigitalOcean 账号认证 Docker 与 DigitalOcean 注册表通信。若未执行此步骤,构建和推送操作会因 401 认证错误而失败。
4

构建并推送 Docker 镜像到 DigitalOcean 注册表

确保你当前在包含 Dockerfile 的目录,使用一条命令构建并推送 Docker 镜像到 DigitalOcean 注册表:
terminal
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .
如果你的机器是 ARM 架构(如 M1/M2 Mac),必须使用 docker buildx 并指定 --platform=linux/amd64 以保证镜像与 DigitalOcean 基础设施兼容。直接使用 docker build 会生成 ARM64 镜像,DigitalOcean 上无法运行。
推送完成后,你应能在 DigitalOcean 注册表控制面板 看到镜像:
DigitalOcean 注册表控制面板
5

创建新的 DigitalOcean App Platform 项目

在 DigitalOcean 控制面板,进入 App Platform > 创建应用。我们可以直接从容器镜像创建项目。
DigitalOcean App Platform 项目控制面板
确认信息无误后,点击 下一步
DigitalOcean App Platform 服务控制面板
检查并配置资源设置,然后点击 创建应用
DigitalOcean App Platform 服务控制面板
6

访问你的在线应用

🥳 你的应用现已上线!应用创建完成后,你应该能在 App Platform 控制面板看到它及其公网 URL。
DigitalOcean App Platform 应用控制面板