Dokku 在 DreamHost Cloud 上的自动化安装指南:基于 OpenStack CLI 与 cloud-init 的免交互部署 📅 发布时间:2026/9/11 16:35:20 👁 浏览次数: Dokku 在 DreamHost Cloud 上的自动化安装指南基于 OpenStack CLI 与 cloud-init 的免交互部署【免费下载链接】dokkuA docker-powered PaaS that helps you build and manage the lifecycle of applications项目地址: https://gitcode.com/GitHub_Trending/do/dokku本文以 Dokku 官方文档中 DreamHost Cloud 安装笔记为核心完整讲解如何借助 OpenStack 命令行客户端创建云服务器实例并通过 cloud-init 脚本一次性完成 Docker、Dokku 的 apt 源配置、debconf 预配置与软件安装。读完本文你将掌握一条可复制的创建实例即装好 Dokku的自动化路径并理解 Dokku Debian 包安装背后 debconf 各选项的真实含义这套方法同样适用于任何兼容 OpenStack 的云平台。方案总览为什么选择 cloud-init 自动安装DreamHost Cloud 基于 OpenStack 构建其用户数据user-data机制允许在创建云服务器实例时注入 cloud-init 脚本。Dokku 官方提供的思路是把 Docker 与 Dokku 的软件源、GPG 公钥以及 debconf 预配置全部写进一份#cloud-config格式的脚本随openstack server create命令一起提交。实例首次启动时cloud-init 会按脚本自动完成一切安装步骤无需人工 SSH 登录后再执行任何安装命令。与手动安装参考 Debian 包安装笔记相比这种方式的好处在于可重复同一份脚本可反复用于创建任意数量的 Dokku 实例免交互通过 debconf 预置答案apt-get install dokku不会弹出任何配置向导可移植脚本除镜像与 flavor 名称外几乎不依赖 DreamHost 特有 API其他 OpenStack 兼容云稍作修改即可使用。第一步准备工作在本地终端中安装 OpenStack 命令行客户端并从 DreamHost Cloud 控制台的 API 访问页面下载凭据文件通常名为openrc.sh。同时确保你的公钥已经添加到云端SSH 密钥管理这是后续 Dokku 复用它作为初始部署密钥的前提。加载凭据使 OpenStack 客户端能够连接 DreamHost API 端点source openrc.sh # 为 DreamHost Cloud 设置环境变量第二步使用 OpenStack CLI 创建实例下面这条命令会基于 Ubuntu 24.04 镜像创建一个名为my-dokku-instance的新实例内存 2 GB、1 核 CPU对应 flavorgp1.supersonic打开 HTTP 与 SSH 的网络端口访问default安全组并指定你选择的 SSH 密钥名openstack server create \ --image Ubuntu-24.04 \ --flavor gp1.supersonic \ --security-group default \ --key-name $YOUR_SSH_KEYNAME \ --user-data dokku-cloudinit.sh \ my-dokku-instance各参数的作用与注意事项参数说明--image Ubuntu-24.04镜像名称或 ID此处对应 Ubuntu 24.04与 Dokku 支持的发行版一致见 bootstrap.sh 中列出的支持版本--flavor gp1.supersonic规格名称需在你账户中真实存在官方建议至少 1 GB 内存bootstrap 脚本会对小于 1 GB 内存的机器给出警告--security-group default安全组决定放行的端口务必包含 22SSH与 80HTTP--key-name $YOUR_SSH_KEYNAME预先添加的 SSH 密钥名该密钥会被自动写入默认 SSH 用户ubuntu的authorized_keys并会被 Dokku 复用--user-data dokku-cloudinit.sh指定 cloud-init 脚本文件路径实例启动时自动执行my-dokku-instance实例名称可自行修改执行后约一分钟后实例即可登录。可通过 Web 控制台或命令行查看实例 IPnova list使用ubuntu用户名和你之前添加的公钥对应的私钥 SSH 登录ssh ubuntu$INSTANCE_IP注意如果登录足够快Dokku 可能仍在后台安装中尚未就绪。整个安装过程需要几分钟时间可稍候再登录检查。第三步剖析 dokku-cloudinit.sh 云初始化脚本脚本内容为#cloud-config格式cloud-init 会按apt、debconf_selections、packages等配置块依次执行。下面逐段拆解。3.1 apt 软件源配置apt.sources块声明两个源Dokku 的 packagecloud 源与 Docker 官方源并各自内嵌完整的 PGP 公钥用于签名校验#cloud-config apt: sources: source_dokku: source: deb https://packagecloud.io/dokku/dokku/ubuntu/ $RELEASE main key: | -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (GNU/Linux) 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 laU4 -----END PGP PUBLIC KEY BLOCK----- source_docker: source: deb [archamd64] https://download.docker.com/linux/ubuntu $RELEASE stable key: | -----BEGIN PGP PUBLIC KEY BLOCK----- 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 YT90qFF93M3v01BbxPEIY2/9tiIPbrd 0YYh -----END PGP PUBLIC KEY BLOCK-----其中$RELEASE会被 cloud-init 自动替换为当前系统的发行版代号。[archamd64]表明 Docker 源仅用于 amd64 架构。3.2 debconf 预配置核心debconf_selections: vhost: dokku dokku/vhost_enable boolean true # set the domain name of the new Dokku server hostname: dokku dokku/hostname string $YOUR_FULL_QUALIFIED_DOMAIN # this copies over the public SSH key assigned to the server key: dokku dokku/key_file string /home/ubuntu/.ssh/authorized_keys这是整份脚本的关键通过 debconf 在安装 Dokku 前预置三个问题的答案从而让apt-get install dokku全程无需人工干预dokku dokku/vhost_enable boolean true开启基于 vhost 的部署即应用可通过[yourapp].$HOSTNAME访问dokku dokku/hostname string $YOUR_FULL_QUALIFIED_DOMAIN设置 Dokku 服务器的 FQDN全限定域名务必替换为真实指向该服务器 IP 的域名dokku dokku/key_file string /home/ubuntu/.ssh/authorized_keys指定初始 SSH 公钥来源文件。由于创建实例时指定的密钥已被云平台写入ubuntu用户的authorized_keysDokku 安装脚本会把该文件内容作为初始部署密钥导入无需再次手工添加。3.3 软件包安装packages: - dokku package_update: true package_upgrade: true package_reboot_if_required: truepackages安装dokku软件包依赖会自动拉入 Dockerpackage_update/package_upgrade安装前先更新并升级系统软件包package_reboot_if_required若内核等需要重启允许 cloud-init 自动重启。第四步debconf 选项全解源码级脚本中出现的三个 debconf 键都定义在 Debian 包的模板文件 debian/templates 中。完整的可用选项如下表默认值同样来自该文件名称类型默认值说明dokku/vhost_enablebooleanfalse是否启用基于 vhost 的部署例如[yourapp].dokku.medokku/hostnamestringdokku.me服务器主机名用作 vhost 域名并在部署后用于展示应用 URLdokku/skip_key_filebooleanfalse是否跳过对dokku/key_file存在性的检查。设为 true 时之后必须手动添加 SSH 密钥dokku/key_filestring/root/.ssh/id_rsa.pub磁盘上要导入到 Dokku 用户的 SSH 公钥文件路径执行dpkg-reconfigure时会被忽略dokku/nginx_enablebooleantrue是否启用 nginx-vhosts 插件dokku/install_default_sitebooleantrue全新安装时是否安装一个兜底的 nginx 默认站点从 debian/config 可以看出安装时的交互提示顺序为dokku/nginx_enable→dokku/hostname→dokku/vhost_enable仅在非 reconfigure 模式下还会询问dokku/key_file与dokku/install_default_site。在 debian/postinst 的dpkg-handling函数中可以看到这些选项的实际生效逻辑若dokku/vhost_enable为 true则把dokku/hostname的值写入$DOKKU_ROOT/VHOST文件默认$DOKKU_ROOT为/home/dokku若dokku/key_file指向的文件存在则通过sshcommand acl-add dokku default将其中公钥导入 Dokku 用户dokku/nginx_enable为 false 时setup-plugins会跳过 nginx-vhosts 插件的启用dokku/install_default_site为 true 时setup-default-site会安装一个 catch-all nginx 默认站点并依据 nginx 版本自动选择default-site.conf或default-site-legacy.conf模板nginx 1.19.4 使用 legacy 模板。提示这些 debconf 选项同样可以通过环境变量驱动。官方 bootstrap.sh 支持DOKKU_VHOST_ENABLE、DOKKU_HOSTNAME、DOKKU_SKIP_KEY_FILE、DOKKU_KEY_FILE、DOKKU_NGINX_ENABLE等变量内部即转换成对应的debconf-set-selections调用后再执行apt-get install dokku与 cloud-init 脚本殊途同归。第五步登录验证与后续配置实例创建后约一分钟即可 SSH 登录ssh ubuntu$INSTANCE_IP登录后可通过以下命令确认 Dokku 是否就绪dokku version由于密钥已在安装阶段自动导入/home/ubuntu/.ssh/authorized_keys中的内容被复制为 Dokku 用户的初始密钥你甚至可以直接通过 Git 协议使用 Dokku 部署应用无需再次执行dokku ssh-keys:add。如果后续需要追加更多密钥可参考 SSH 用户管理 中的dokku ssh-keys:add用法。若实例规格较小内存不足 1 GB可参考 高级安装说明 中关于为低内存虚拟机配置 swap 的建议保证容器构建过程稳定。常见问题Q为什么登录后 Dokku 命令不可用A安装仍在后台进行。cloud-init 脚本要完成软件源配置、系统升级与dokku包安装全程需要数分钟稍候重新登录或等待安装日志结束即可。Qnova list命令不存在A较新版本的 OpenStack 客户端已将nova命令合并进openstack server list若nova不可用改用openstack server list查看实例与 IP。Q如何更换域名A安装后可通过dokku domains:set-global设置全局域名或对单个应用使用dokku domains:add管理域名详见 域名配置。Q能否在其他 OpenStack 云上使用A可以。脚本仅依赖标准的 cloud-init user-data 机制与 OpenStack 创建接口只要替换镜像名称、flavor 与密钥名即可在任意 OpenStack 兼容平台上复用这正是官方文档强调any other OpenStack-compatible cloud with minimal changes的原因。总结通过openstack server create与一份#cloud-config脚本的组合Dokku 在 DreamHost Cloud 上的部署可以做到建实例即装完apt 源与 GPG 公钥解决软件来源与信任问题debconf 预配置消除安装交互key_file复用云平台注入的 SSH 密钥解决认证问题。理解 debian/templates、debian/config 与 debian/postinst 三者之间的协作关系后你便可以在任何 Debian/Ubuntu 系主机上以同样的 debconf 方式实现 Dokku 的无人值守安装。【免费下载链接】dokkuA docker-powered PaaS that helps you build and manage the lifecycle of applications项目地址: https://gitcode.com/GitHub_Trending/do/dokku创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考