本项目提供了一个高效、灵活的 Docker 解决方案,用于在本地或任何支持容器化部署的环境(如 K8s, Cloud Run)中运行 Cloudflare Workers 代码。我们将 workerd 运行时环境与 Workers 业务代码彻底解耦。
linux/amd64 和 linux/arm64,覆盖所有主流云环境和本地开发机。WORKERD_PORT 环境变量灵活配置服务端口。| 文件名 | 用途 | 对应阶段 |
|---|---|---|
worker.js | 你的 Workers 源代码文件。 | 应用代码 |
Dockerfile.prod | 生产环境构建蓝图,用于将 worker.js 固化到最终镜像。 | 生产部署 |
docker-compose.yml | 编排构建、运行和测试生产镜像的工具。 | 本地部署 |
cf-workerd-base/ | 包含基础运行时环境 (Dockerfile.base, entrypoint.sh) 的目录。 | 基础设施 |
你需要本地安装 Docker 和 Docker Compose。
此模式允许你直接运行已构建的基础镜像,并通过挂载卷实时测试 worker.js 的修改。
假设你已经从 CI/CD 仓库拉取了基础镜像(例如:docker.cnb.cool/xzydm/cloudflare-workerd-base/cfworkerd-base:latest)。
# 假设 BASE_IMAGE_TAG 已定义
BASE_IMAGE_TAG="docker.cnb.cool/xzydm/cloudflare-workerd-base/cfworkerd-base:latest"
# 1. 清理旧容器 (如果存在)
docker rm -f cf-worker-dev
# 2. 运行容器并挂载本地 worker.js
docker run -d \
-p 8080:8080 \
-e WORKERD_PORT=8080 \
--name cf-worker-dev \
-v $(pwd)/worker.js:/app/worker.js \
"${BASE_IMAGE_TAG}"
对于最终部署,使用 docker-compose 可以一键完成代码固化(通过 Dockerfile.prod)和容器启动。
# 1. 确保 worker.js 和 docker-compose.yml 存在于当前目录。
# 2. 构建并运行服务:
docker-compose up --build -d
停止和清理服务:
docker-compose down