从普通 Dockerfile 部署容器

从普通 Dockerfile 部署容器

💡 原文英文,约200词,阅读约需1分钟。
📝

内容提要

Vercel 容器运行时支持直接部署根目录下的 Dockerfile 或 Containerfile:未检测到其他框架时,Vercel 自动采用容器预设,构建镜像并路由全部流量。若检测到 Django 等框架则优先使用框架,可通过 `vercel project update --framework container` 或在 vercel.json 中设置 framework 为 container 强制使用容器。Dockerfile.vercel 优先于检测到的框架,多服务项目仍使用 services 配置。该运行时处于测试阶段,基于 Vercel Functions,按 Active CPU 计费。

🔎

延伸解读

框架检测优先于容器预设

Vercel 会先检测项目中的框架,若识别到 Django 等框架,则默认使用框架预设而非根目录的 Dockerfile。这意味着普通 Dockerfile 部署并非无条件生效,开发者需通过命令行或 vercel.json 显式指定 container 框架,才能强制使用容器构建。

Dockerfile.vercel 的优先级规则

文章指出 Dockerfile.vercel 或 Containerfile.vercel 的优先级高于检测到的框架。因此,若项目根目录同时存在普通 Dockerfile 和 Dockerfile.vercel,后者会被优先采用。多服务项目则仍需在 vercel.json 的 services 中为每个服务单独配置入口。

测试阶段与计费方式

Container 运行时目前处于测试阶段,基于 Vercel Functions 运行,并按 Active CPU 计费。这意味着其稳定性和功能可能仍在演进,且费用与实际活跃 CPU 使用相关,而非简单的请求次数或固定时长。

❓

Q&A

如何在 Vercel 上直接部署根目录的 Dockerfile?

在项目根目录添加 Dockerfile 或 Containerfile,当 Vercel 未检测到其他框架时,会自动选择 Container 预设,构建该文件并将所有流量路由到生成的镜像。

Vercel 检测到 Django 框架时,如何强制使用容器部署?

运行 `vercel project update --framework container`,或在 vercel.json 中设置 `"framework": "container"`,即可强制使用容器部署。

Dockerfile.vercel 和普通 Dockerfile 在 Vercel 上哪个优先?

Dockerfile.vercel 或 Containerfile.vercel 优先于检测到的框架,而普通 Dockerfile 仅在未检测到其他框架时被使用。

多服务项目在 Vercel 容器运行时中如何配置?

多服务项目仍使用 vercel.json 的 services 配置,并为每个服务指定入口点。

Vercel 容器运行时目前处于什么阶段?如何计费?

容器运行时处于测试阶段,基于 Vercel Functions 运行,按 Active CPU 计费。

能否提供一个在 Vercel 上部署容器的 Dockerfile 示例?

可以,例如:`FROM node:26-alpine`、`RUN npm i -g srvx`、`COPY . /app`、`WORKDIR /app`、`EXPOSE 3000`、`CMD ["srvx", "--port", "3000"]`。

🏷️

标签

➡️

继续阅读