概览
提供一个节点.js生成器来生成多克文件和相关文件. 它旨在支持列出其附属关系的任何框架,包括: start 脚本在 package.json,可选择包括 build 剧本.
见 测试 根据相关的 package.json 并锁定文件.
见 博客文章 更多信息.
使用量
要运行一次:
npx --yes @flydotio/dockerfile@latest
bunx --bun @flydotio/dockerfile@latest
或者用你最喜欢的软件包管理器安装:
bun add -d @flydotio/dockerfile
npm install @flydotio/dockerfile --save-dev
pnpm add -D @flydotio/dockerfile
yarn add @flydotio/dockerfile --dev
一旦安装, 您可以使用 npx dockerfile 用于Node.js应用程序或 bunx --bun dockerfile bun应用程序.
选项在运行之间被保存 package.json。要反转布尔选项,请从选项名称中添加或删除一个无前缀.
选项 :
--alpine- 使用时 阿尔卑斯山 作为基础图像--build=CMD- 用于构建应用程序的命令.--cache- 利用建筑缓存来加快建造--caddy- 为静态场地服务(静态Astro) 凯蒂 而不是nginx。 .--cmd=CMD- 用于多克文件的CMD--defer-build- 可能需要,当你的建设步骤需要 获取在图像构建时间没有的秘密。 图像较大,部署较慢.--dev- 包括devDependencies在制作图像中.--distroless- 使用时 无双 降低图像大小的基础图像--entrypoint- 用于多克文件的ENTRYPOINT--ignore-scripts- 不执行工程中定义的任何脚本package.json及其依附关系.--force- 覆盖已存在的文件--legacy-peer-deps- 说吧 忽略对等依赖。 。 。 .--litefs- 配置和启用 升数。 。 。 .--litestream- 配置和启用 升流线。 。 。 .--nginxRoot=DIR- 通过给定目录服务静态文件 阴性。 。 。 .--link- 添加内容 --链接 给缔约方会议的声明。 一些工具,包括: 建设)或(或) 库克 不正确支持此特性.--port=n- 曝光端口(默认可能因框架而异,但否则3000(中文(简体) )--swap=n- 分配交换空间。 见 falloc 选项 用于后缀--windows- 使Dockerfile为可能已经设置的Windows用户工作git config --global core.autocrlf true。 。 。 .
添加软件包/环境变量/构建参数:
无法通过扫描您的应用程序来确定您的全部需求 。 例如,我想补充: 维姆 财务报告和审定财务报表 道具。 。 。 .
--add package...- 增加一个或多个debian软件包--arg=name:value- 添加一个 构建参数--env=name:value- 增加环境变量--remove package...- 从“待添加”列表中删除软件包
参数和环境变量可以通过添加来适应特定的构建阶段 -base, (中文(简体) ), -build,或 -deploy 旗名后( 例如) --add-build freetds-dev --add-deploy freetds-bin) (中文(简体) ). 如果没有找到这样的后缀, 参数的默认值为 -base,则内存的默认值是 -deploy。去除参数或环境变量时,将数值留空(例如 --env-build=PORT:) (中文(简体) ).
建立秘密
使用数据库生成静态站点等技术可能需要在建设时访问机密. 要做到这一点,你需要 挂载 秘诀:
--mount-secret=name- 添加 名称 至运行构建脚本时要挂载的秘密列表--unmount-secret=name- 删除 名称 从运行构建脚本时要挂载的秘密列表中
见 揭发建筑的秘密 以实例说明如何将秘密传递给一个嵌入式建筑.
高级定制
可能有时 特征检测加旗帜还不够 例如,您可能希望配置和运行多个进程.
--instructions=path- 在最后文件中插入一个嵌入文件碎片.
比如环境变量,软件包,和构建参数, --instructions 可以通过增加 -base, (中文(简体) ), -build,或 -deploy 在旗帜名称后,默认为 -deploy。 。 。 .
平台特定处理
除了创建多克文件和相关文物, dockerfile-node 可以运行平台特定处理. 目前第一个也是唯一利用这个平台的自然是fly.io.
如果,并且只有, flyctl 已安装,是路径的一部分,并且存在有效的 fly.toml 当前目录中的文件, dockerfile-node 将:
- 为 sqlite 配置并创建音量3
- 如果选中此选项, 设置交换文件大小
- 副领事
- 设置重混和 adonis 应用程序的秘密
- 初始化 git
- 定义中转应用程序,如果其中提及
.github/workflows/deploy.yml
测试
仅援引 npm test 将运行所有定义的测试。 临Τ npm run eslint 会运行斯林特.
目前的集成测试策略是对照各种配置运行多克文件生成器,并比较生成的文物与预期结果. ARG 数值 Dockerfiles 在比较前蒙上面具.
为了协助这一进程,可以自动获取测试结果。 这在增加新的测试和作出影响许多测试的改变时是有用的. 确保检查输出( 例如, 通过使用) git diff) 承诺之前.
npm run test:capture
为了进行单一测试(或测试图案),直接使用 grep 选项.
npx mocha --grep swap
此外,每个测试目录中的每个输出都可以被直接测试,以确保它们能够成功通过运行在必要的构建参数中传递的嵌入器构建目录来构建. 例如:
docker buildx build . --build-arg NODE_VERSION=18