资讯详情

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

📅 2026/9/11 19:10:30 | 华诺云谱 👁 阅读
如何用 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 buildPacker 会连接 DigitalOcean API 创建一台临时 Droplet 完成装机再把它做成快照。按 README 的说明Packer 可通过 HomebrewmacOS或 aptUbuntu/Debian安装macOSbrew tap hashicorp/tap brew install hashicorp/tap/packerUbuntu/Debiancurl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - sudo apt-add-repository deb [archamd64] 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_TOKENyour-personal-token其中your-personal-token替换为你生成的 token 值。接着进入 DigitalOcean 部署目录并执行构建cd deploy/digital_ocean packer build template.jsontemplate.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 内不是你的本机了解它们有助于判断构建失败发生在哪一步cloud-init status --wait等待系统初始化完成把本地 files/etc/ 和 files/var/ 拷贝到 Droplet 的/etc/和/var/其中包含 MOTD 提示脚本 99-one-click登录时提示 Appsmith 安装在/root/appsmith和首启脚本 01-onboot执行 install-docker.sh安装docker-ce、docker-ce-cli、containerd.io下载 docker-compose 1.29.2 二进制到/usr/local/bin/docker-compose并执行groupadd docker和usermod -aG docker $USER依次执行 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 的发布流程操作进入Marketplace Vendor Portal在 One-Click App 列表中选中 Appsmith 应用编辑应用信息在 Edit 表单中点击Select system image选择刚刚由 Packer 创建的新快照如需升版本号同时把App Version改为更高的版本滚动到表单底部点击Preview预览审核过程约需 2–3 个工作日审核通过后提交变更即应用到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),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。