578 字
3 分钟
手把手教你部署Discourse
Discourse是一个开源的强大的论坛系统,让你马上就能拥有自己的BBS
2025-05-02
加载中...

正式开始#

确保你安装了 DockerDocker-Compose

选一个目录创建 docker-compose.yml

写入内容

version: '2'
services:
postgresql:
image: docker.io/bitnami/postgresql:11
volumes:
- 'postgresql_data:/bitnami/postgresql'
environment:
- POSTGRESQL_POSTGRES_PASSWORD=admin12345
- POSTGRESQL_USERNAME=ex_discourse
- POSTGRESQL_PASSWORD=user12345
- POSTGRESQL_DATABASE=example_discourse
redis:
image: docker.io/bitnami/redis:6.0
environment:
- REDIS_PASSWORD=redis12345
volumes:
- 'redis_data:/bitnami/redis'
discourse:
image: docker.io/bitnami/discourse:2
ports:
- '127.0.0.1:880:3000'
volumes:
- 'discourse_data:/bitnami/discourse'
depends_on:
- postgresql
- redis
environment:
# 用户和站点配置
- DISCOURSE_HOST=example.com
- DISCOURSE_USERNAME=siteadmin
- DISCOURSE_PASSWORD=siteadmin12345
- DISCOURSE_EMAIL=siteadmin@gmail.com
# 数据库连接配置
- DISCOURSE_DATABASE_HOST=postgresql
- DISCOURSE_DATABASE_PORT_NUMBER=5432
- DISCOURSE_DATABASE_USER=ex_discourse
- DISCOURSE_DATABASE_PASSWORD=user12345
- DISCOURSE_DATABASE_NAME=example_discourse
# Redis 连接配置
- DISCOURSE_REDIS_HOST=redis
- DISCOURSE_REDIS_PORT_NUMBER=6379
- DISCOURSE_REDIS_PASSWORD=redis12345
# 使用 postgresql-client 为 Discourse 创建数据库
- POSTGRESQL_CLIENT_POSTGRES_USER=postgres
- POSTGRESQL_CLIENT_POSTGRES_PASSWORD=admin12345
- POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=example_discourse
- POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS=hstore,pg_trgm
# SMTP
- DISCOURSE_SMTP_HOST=smtp.mailgun.org
- DISCOURSE_SMTP_PORT=587
- DISCOURSE_SMTP_USER=邮箱用户名
- DISCOURSE_SMTP_PASSWORD=邮箱密码
- DISCOURSE_SMTP_PROTOCOL=tls或ssl
- DISCOURSE_SMTP_AUTH=login
sidekiq:
image: docker.io/bitnami/discourse:2
depends_on:
- discourse
volumes:
- 'sidekiq_data:/bitnami/discourse'
command: /opt/bitnami/scripts/discourse-sidekiq/run.sh
environment:
# 用户和站点配置
- DISCOURSE_HOST=example.com
- DISCOURSE_USERNAME=siteadmin
- DISCOURSE_PASSWORD=siteadmin12345
- DISCOURSE_EMAIL=siteadmin@gmail.com
# 数据库连接配置
- DISCOURSE_DATABASE_HOST=postgresql
- DISCOURSE_DATABASE_PORT_NUMBER=5432
- DISCOURSE_DATABASE_USER=ex_discourse
- DISCOURSE_DATABASE_PASSWORD=user12345
- DISCOURSE_DATABASE_NAME=example_discourse
# Redis 连接配置
- DISCOURSE_REDIS_HOST=redis
- DISCOURSE_REDIS_PORT_NUMBER=6379
- DISCOURSE_REDIS_PASSWORD=redis12345
# SMTP
- DISCOURSE_SMTP_HOST=smtp.mailgun.org
- DISCOURSE_SMTP_PORT=587
- DISCOURSE_SMTP_USER=邮箱用户名
- DISCOURSE_SMTP_PASSWORD=邮箱密码
- DISCOURSE_SMTP_PROTOCOL=tls或ssl
- DISCOURSE_SMTP_AUTH=login
volumes:
postgresql_data:
driver: local
redis_data:
driver: local
discourse_data:
driver: local
sidekiq_data:
driver: local

需要修改的部分。配置文件中两份都要改

需替换值解释
admin12345数据库管理员密码(可选)
ex_discourse数据库用户名(可选)
user12345数据库用户密码(可选)
example_discourse数据库名(可选)
redis12345Redis 密码(可选)
127.0.0.1:880映射端口(可选)
example.com网站IP或域名(不加HTTP)(必改
siteadmin网站管理员用户名(必改
siteadmin12345网站管理员密码(必改
siteadmin@gmail.com网站管理员邮箱(必改
smtp.mailgun.org邮箱HOST(必改
587邮箱端口。只能用587端口(必改
邮箱用户名邮箱用户名(必改
邮箱密码邮箱密码(或者授权码)(必改
tls邮箱协议。只能用TLS协议(必改

如果需要一个支持SMTP TLS的邮箱服务可以使用微信企业邮

构建:

Terminal window
docker compose up -d

如果遇到 docker.io 无法访问。可以使用镜像源

部署完毕后查看 discourse-discourse-1 容器的日志

如果看到下述日志,则Discourse正在进行预编译资源,稍等几分钟即可

INFO ==> Precompiling assets, this may take some time...

如果看到下述日志,证明Discourse已经在容器内3000端口启动了

Terminal window
Accessible via: http://0.0.0.0:3000/

接下来访问你设置的域名(如果没有做解析或者网站在内网可以使用Cloudflare Tunnel曲线救国)

访问,大功告成

2025-05-02-22-20-51-image.png

手把手教你部署Discourse
https://www.2x.nz/posts/discourse/
作者
二叉树树
发布于
2025-05-02
许可协议
CC BY-NC-SA 4.0