# 使用 Kamal 进行部署

**URL:** https://meta.discourse.org/t/deployment-with-kamal/410153
**Category:** Self-hosting
**Created:** [2026年八月16日 14:41 UTC](https://meta.discourse.org/t/deployment-with-kamal/410153 "2026-08-16T14:41:20Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![sigmike](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sigmike/32/117797_2.png) [@sigmike](https://meta.discourse.org/u/sigmike)
#### Post date: [2026年八月16日 14:41 UTC](https://meta.discourse.org/t/deployment-with-kamal/410153/1 "2026-08-16T14:41:20Z")

</div>

有人使用 [Kamal](https://kamal-deploy.org/) 部署过 Discourse 吗？

我想可以通过使用 [独立模板](https://github.com/discourse/discourse_docker#single-container-vs-multiple-containers)，或者编写一个将所有依赖容器作为附属组件的 deploy.yml 来实现。

文档指出独立模板的缺点是在升级时停机时间较长，但使用 Kamal 则不会出现这种情况，因为它支持零停机部署（它会保留旧容器，并仅在新容器返回 HTTP 200 响应时才将反向代理切换到新容器）。

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2026年八月17日 18:09 UTC](https://meta.discourse.org/t/deployment-with-kamal/410153/2 "2026-08-17T18:09:50Z")

</div>

> [@sigmike](#):
>
> 但使用 Kamal 就不会出现这种情况，因为它支持零停机部署（它会保留旧容器，只有在新容器返回 HTTP 200 响应时，才会将反向代理切换到新容器）。

但这行不通，因为你不能同时让两个容器访问同一个 PostgreSQL 数据库。你需要构建自己的容器，使其在启动时执行迁移，或者使用目前尚不支持的、具备类似功能的新容器。你需要找一位既了解 Discourse 又熟悉 Kamal 的人来搞定这件事。由于目前还没有人回复，看来这里并没有这样的人。

建议先按照标准流程进行安装，然后再研究如何与 Kamal 配合使用。
