news 2026/9/11 19:10:15

如何用 Packer 构建 DigitalOcean 快照并发布 Appsmith One-Click 新版本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 Packer 构建 DigitalOcean 快照并发布 Appsmith One-Click 新版本

如何用 Packer 构建 DigitalOcean 快照并发布 Appsmith One-Click 新版本

【免费下载链接】appsmithPlatform to build admin panels, internal tools, and dashboards. Integrates with 25+ databases and any API.项目地址: https://gitcode.com/GitHub_Trending/ap/appsmith

当你需要把 Appsmith 的新版本发布到 DigitalOcean Marketplace 的 One-Click 应用时,整条流程是:用 Packer 基于deploy/digital_ocean/template.json构建一个新的 DigitalOcean 快照,然后在 DigitalOcean 的Marketplace Vendor Portal中把这个快照设置为 One-Click 应用的System Image并提交审核。本文基于仓库中 deploy/digital_ocean/README.md 及其引用的模板和脚本,给出从安装 Packer 到提交 Marketplace 审核的完整操作路径。前提是你已有 DigitalOcean 账号,并且能够访问 Marketplace Vendor Portal。

准备条件:安装 Packer

构建在本地机器上执行packer build,Packer 会连接 DigitalOcean API 创建一台临时 Droplet 完成装机,再把它做成快照。按 README 的说明,Packer 可通过 Homebrew(macOS)或 apt(Ubuntu/Debian)安装:

macOS:

brew tap hashicorp/tap brew install hashicorp/tap/packer

Ubuntu/Debian:

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" sudo apt-get update && sudo apt-get install packer

这两组命令会在你的本机上安装 Packer 及其 HashiCorp apt 源(Ubuntu/Debian 方式需要 sudo 权限)。

构建快照:配置 token 并执行 packer build

按 README 的步骤,先按 DigitalOcean 官方文档生成一个 Personal Access Token,然后导出为环境变量:

export DIGITALOCEAN_TOKEN=<your-personal-token>

其中<your-personal-token>替换为你生成的 token 值。接着进入 DigitalOcean 部署目录并执行构建:

cd deploy/digital_ocean packer build template.json

template.json 的关键配置如下,token 通过{{env "DIGITALOCEAN_TOKEN"}}从环境变量读取,快照名使用 Packer 自动填充的时间戳,无需手动替换:

{ "variables": { "token": "{{env `DIGITALOCEAN_TOKEN`}}", "image_name": "appsmith-marketplace-snapshot-{{timestamp}}" }, "builders": [ { "type": "digitalocean", "api_token": "{{user `token`}}", "image": "ubuntu-20-04-x64", "region": "blr1", "size": "s-1vcpu-1gb", "ssh_username": "root", "snapshot_name": "{{user `image_name`}}" } ] }

也就是说,Packer 会在blr1区域用s-1vcpu-1gb规格创建一台基于ubuntu-20-04-x64的 Droplet,以root用户 SSH 登录执行 provisioner,完成后产出名为appsmith-marketplace-snapshot-<时间戳>的快照。

构建过程中 provisioner 实际做了什么

模板中定义了五组 provisioner,全部运行在上述临时 Droplet 内(不是你的本机),了解它们有助于判断构建失败发生在哪一步:

  1. cloud-init status --wait:等待系统初始化完成;
  2. 把本地 files/etc/ 和 files/var/ 拷贝到 Droplet 的/etc//var/,其中包含 MOTD 提示脚本 99-one-click(登录时提示 Appsmith 安装在/root/appsmith)和首启脚本 01-onboot;
  3. 执行 install-docker.sh:安装docker-cedocker-ce-clicontainerd.io,下载 docker-compose 1.29.2 二进制到/usr/local/bin/docker-compose,并执行groupadd dockerusermod -aG docker $USER
  4. 依次执行 01-packages.sh、90-cleanup.sh、99-img_check.sh。

需要注意这几个脚本的副作用范围(都发生在临时 Droplet 上):

  • 01-packages.sh会先fallocate -l 8G /swapfile创建 8G 交换文件以防止构建时 OOM,执行apt-get update/upgrade、安装 DigitalOcean agent、ufw enable并放行http/https/ssh;快照制作前会swapoff并删除该 swapfile。
  • 90-cleanup.sh会升级系统包,并清空/tmp/var/tmp、bash history、/root/.ssh/authorized_keys、SSH 密钥文件、大部分日志,最后用dd if=/dev/zero of=/zerofile写零填满剩余磁盘空间以安全擦除未使用区域——脚本自带提示,磁盘较大时这一步可能需要数分钟。
  • 99-img_check.sh是 DigitalOcean Marketplace Image Validation Tool(脚本内标注v. 1.6),要求以 root 运行,用于校验镜像是否满足 Marketplace 要求。

验证构建结果

构建是否有问题,以99-img_check.sh的输出为准。该工具依次检查发行版版本是否在支持列表内(Ubuntu 16.04/18.04/20.04、Debian 9/10、CentOS 6/7/8)、cloud-init 是否安装、防火墙(如ufw)是否激活、是否有未安装的安全更新、日志是否已清理、用户账户与 SSH 密钥是否符合要求、DigitalOcean Monitoring agent 是否存在(检测到会判为 FAIL),并打印形如以下的汇总:

Scan Complete. All Tests Passed!

如果存在 WARN 项,输出为Some non-critical tests failed. Please review these items.并以退出码 0 结束;如果出现关键项 FAIL,输出One or more tests failed. Please review these items and re-test.并以退出码 1 结束,需要修复后重新执行packer build重跑扫描。全部通过后,DigitalOcean 控制台中会出现名称形如appsmith-marketplace-snapshot-<时间戳>的新快照,这就是要发布的 System Image。

在 Marketplace Vendor Portal 发布新版本

快照构建完成后,按 README 的发布流程操作:

  1. 进入Marketplace Vendor Portal
  2. 在 One-Click App 列表中选中 Appsmith 应用,编辑应用信息;
  3. 在 Edit 表单中点击Select system image,选择刚刚由 Packer 创建的新快照(如需升版本号,同时把App Version改为更高的版本);
  4. 滚动到表单底部点击Preview,预览审核过程约需 2–3 个工作日;
  5. 审核通过后提交,变更即应用到DigitalOcean Marketplace

快照的首启行为与边界说明

用户通过 One-Click 部署 Droplet 后,cloud-init 的 per-instance 脚本 01-onboot 会执行:创建/root/appsmith目录,从 Appsmith 仓库 master 分支的deploy/aws_ami/docker-compose.yml(即本仓库的 deploy/aws_ami/docker-compose.yml)下载 compose 文件,然后docker-compose pull拉取镜像并docker-compose up --detach --remove-orphans启动容器。因此快照本身预装的是 Docker 与首启拉取逻辑,Appsmith 镜像在 Droplet 首次启动时获取。

两点边界:

  • 发布周期由 Marketplace 审核决定,文档明确 Preview 约需 2–3 个工作日,这是流程中最长的等待环节。
  • 仓库中另有一份 deploy/packer/template.json.pkr.hcl,它同时定义了 AWS EBS 与 DigitalOcean 两个 builder 并通过 Ansible playbook 装机,与本文的 One-Click 快照路径(仅deploy/digital_ocean/template.json、shell provisioner)不是同一条流程,两套模板的 SSH 用户、装机方式均不同。本文场景只使用deploy/digital_ocean/template.json这条 README 指定的路径。

完成上述步骤后,Marketplace 上的 Appsmith One-Click 应用即指向新快照;若审核未通过或校验脚本出现 FAIL,回到packer build修复重建,而不是直接重复提交。

【免费下载链接】appsmithPlatform to build admin panels, internal tools, and dashboards. Integrates with 25+ databases and any API.项目地址: https://gitcode.com/GitHub_Trending/ap/appsmith

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 19:08:24

【滚雪球学数学建模】第21节·复杂问题抽象与模型设计

🎓 本文收录于《滚雪球学数学建模》系列专栏 数学建模真正的难点,往往不在于掌握某一个公式或算法,而在于面对实际问题时,能否完成从 问题分析 → 模型构建 → 算法求解 → 结果验证 → 论文表达 的完整闭环。 本专栏正是围绕这一目标打造:从零基础出发,通过“滚雪球式”…

作者头像 李华
网站建设 2026/9/11 19:02:03

如何用单文件替代 Armoury Crate:G-Helper 完整使用指南

如何用单文件替代 Armoury Crate&#xff1a;G-Helper 完整使用指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …

作者头像 李华
网站建设 2026/9/11 19:01:58

【JAVA毕设源码分享】基于 SpringBoot 框架的河南文化旅游网站的设计与实现 基于 SpringBoot 的河南文旅服务平台(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/11 19:01:39

2026 下半年 AI 产品的数据指标会往哪走

摘要&#xff1a;AI 行业正在集体告别"先爽后算账"的阶段——装机量、月活这些"爽指标"不再能说服投资人&#xff0c;留存、使用深度、单位经济成为新焦点。本文基于近期行业数据与报告&#xff0c;梳理 2026 下半年 AI 产品数据指标的三次迁移&#xff0c…

作者头像 李华
网站建设 2026/9/11 19:00:40

考研调剂公告怎么读?从长春工业大学样本看调剂全流程与避坑指南

每年二三月&#xff0c;考研初试成绩公布后的这段时间&#xff0c;很多学生的手机都会一刻不停刷着各类调剂信息。如果你恰好看到了“长春工业大学2025年硕士研究生招生调剂公告&#xff08;一&#xff09;”这样一条标题&#xff0c;第一反应可能是赶紧点进去找有没有自己的专…

作者头像 李华
网站建设 2026/9/11 19:00:14

curl `--proto` 选项深度解析:用协议白名单精准控制传输边界

curl --proto 选项深度解析&#xff1a;用协议白名单精准控制传输边界 【免费下载链接】curl A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQ…

作者头像 李华