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。