运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

在 DigitalOcean 上部署 Bun 应用

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"]
    

    在项目根目录中创建一个新的 .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
    
    Text
    Logging Docker in to registry.digitalocean.com
    Notice: Login valid for 30 days. Use the --expiry-seconds flag to set a shorter expiration or --never-expire for no expiration.
    
  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 .
    

    推送完成后,你应能在 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 应用控制面板