将 Bun 应用容器化
先决条件
- 你需要一个 Git 客户端。本节中的示例使用基于命令行的 Git 客户端,但你可以使用任何客户端。
概述
长期以来,Node.js 一直是服务器端 JavaScript 应用事实上的运行时。近年来,生态系统中出现了新的替代运行时,包括 Bun 网站。与 Node.js 一样,Bun 也是一个 JavaScript 运行时。Bun 是一个相对轻量级的运行时,旨在快速高效。
为什么使用 Docker 开发 Bun 应用?有多种运行时可供选择是一件好事。但随着运行时数量的增加,在不同环境中一致地管理不同的运行时及其依赖项变得具有挑战性。这就是 Docker 的用武之地。按需创建和销毁容器是管理不同运行时及其依赖项的好方法。此外,由于 Bun 是一个相对较新的运行时,为 Bun 获取一致的开发环境可能具有挑战性。Docker 可以帮助你为 Bun 设置一个一致的开发环境。
获取示例应用
克隆示例应用以便与本指南一起使用。打开终端,将目录更改到你想要工作的目录,然后运行以下命令来克隆仓库
$ git clone https://github.com/dockersamples/bun-docker.git && cd bun-docker
现在,你的 bun-docker
目录中应该包含以下内容。
├── bun-docker/
│ ├── compose.yml
│ ├── Dockerfile
│ ├── LICENSE
│ ├── server.js
│ └── README.md
在 Dockerfile 中,你会注意到 FROM
指令使用 oven/bun
作为基础镜像。这是由 Oven(Bun 背后的公司)创建的 Bun 官方镜像。该镜像可在 Docker Hub 上获取。
# Use the Bun image as the base image
FROM oven/bun:latest
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . .
# Expose the port on which the API will listen
EXPOSE 3000
# Run the server when the container launches
CMD ["bun", "server.js"]
除了指定 oven/bun
作为基础镜像外,此 Dockerfile 还
- 将容器中的工作目录设置为
/app
- 将当前目录的内容复制到容器中的
/app
目录 - 暴露端口 3000,API 在此监听请求
- 最后,在容器启动时使用命令
bun server.js
启动服务器。
运行应用
在 bun-docker
目录中,在终端中运行以下命令。
$ docker compose up --build
打开浏览器并在 http://localhost:3000 查看应用。你将在浏览器中看到消息 {"Status" : "OK"}
。
在终端中,按 ctrl
+c
停止应用。
在后台运行应用
你可以通过添加 -d
选项使应用脱离终端在后台运行。在 bun-docker
目录中,在终端中运行以下命令。
$ docker compose up --build -d
打开浏览器并在 http://localhost:3000。
在终端中,运行以下命令停止应用。
$ docker compose down
总结
在本节中,你学习了如何使用 Docker 将 Bun 应用容器化并运行。
相关信息
下一步
在下一节中,你将学习如何使用容器开发应用。