Sign inSign up

micrograils/discuz

By micrograils

Updated 8 months ago

nginx + php_fpm82 + discuz3.5, base on alpine.

Image
Content management system
0

1.2K

micrograils/discuz repository overview

Docker Image Size Docker Pulls Platforms

micrograils/discuz

基于 Alpine Linux 的 Discuz! 论坛 Docker 镜像,集成了 Nginx + PHP-FPM,开箱即用。


✨ 特点

  • 超轻量:基于 Alpine Linux,体积小,启动快
  • 开箱即用:内置 Nginx + PHP-FPM,通过 Supervisor 统一管理
  • 多架构支持:支持 AMD64 / ARM64 双平台
  • 自动 HTTPS 适配:根据 X-Forwarded-Proto 头部自动判断 HTTPS
  • 静态资源缓存:对 JS/CSS/图片等静态资源自动设置长期缓存
  • PHP 优化配置:已调整 upload_max_filesizepost_max_sizememory_limit 等参数

📚 版本说明

镜像标签格式:micrograils/discuz:<VERSION>

标签类型示例说明
版本号3.5.20250901具体的 Discuz! 发布版本,稳定可靠,推荐生产环境使用
latestlatest跟随最新的正式发布版本(x.x.xxx 格式)
mastermaster跟随 DiscuzX 官方 v3.5 分支的最新代码,包含未发布的功能

🚀 快速上手

1. 快速启动(需额外准备数据库)
docker run -d \
    --name discuz \
    -p 12345:80 \
    micrograils/discuz:latest

或带持久化数据:

docker run -d \
    --name discuz \
    -p 12345:80 \
    -v $PWD/data/discuz:/var/www/html \
    micrograils/discuz:latest

启动后访问 http://localhost:12345,进入 Discuz! 安装向导。

2. 使用 Docker Compose 部署

示例 docker-compose.yml 如下,请自行修改数据库密码等信息:

services:
  discuz_web:
    image: micrograils/discuz:3.5.20250901
    restart: always
    volumes:
      - ./data/discuz:/var/www/html
    ports:
      - "12345:80"
    depends_on:
      - discuz_db
    networks:
      - discuz_net
  discuz_db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: discuz
      MYSQL_USER: discuz
      MYSQL_PASSWORD: discuz_password
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      - discuz_net
networks:
  discuz_net:
    driver: bridge

安装时填写数据库信息:

  • 数据库服务器:discuz_db
  • 数据库名:discuz
  • 数据库用户名:discuz
  • 数据库密码:discuz_password

🔧 进阶教程

1. 自定义配置

如果最终部署在 HTTPS 后面(例如nginx),参考配置如下:

server {
    listen 443;
    server_name your_domain.com;

    # HTTPS 配置
    ssl on;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/privatekey.pem;

    location / {
        proxy_pass http://127.0.0.1:12345;
        proxy_set_header Host $host;
        # 重要
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

无论是否开启了 HTTPS:

  1. X-Forwarded-Proto 头部都会被识别,并根据其值自动调整配置
  2. discuz 后台: 全局 - 站点设置 - 站点URL 调整为公网 url,例如 https://your_domain.com
  3. 然后继续后台:工具 - 更新缓存

注:某些情况下,虽然是在 HTTPS 后面,但 X-Forwarded-Proto 头部可能不存在(比如前面的反代配置你没有修改权利),此时需要手动调整配置:

docker exec -it ${discuz_web_real_id}$ /bin/sh

sed -i 's/fastcgi_param HTTPS $php_https;/fastcgi_param HTTPS on;/g' /etc/nginx/http.d/default.conf

nginx -t && nginx -s reload

📝 技术细节

基础环境
  • Alpine Linux:3.22.2
  • PHP 版本:8.2
  • Web 服务器:Nginx
  • 进程管理:Supervisor
PHP 扩展(discuz最小化需求)
  • mysqli(数据库连接)
  • curl、gd、xml(网络、图片、XML 处理)
  • iconv、simplexml(字符编码转换)
  • sodium(加密功能)
  • bcmath、ctype、phar(数学运算、字符类型判断、归档处理)
PHP 配置优化
参数说明
upload_max_filesize10M最大上传文件大小
post_max_size64M最大 POST 数据大小
memory_limit256MPHP 内存限制
max_execution_time300最大执行时间(秒)
clear_envno保留环境变量
Nginx 配置特性
  • 支持 HTTPS 自动识别(通过 X-Forwarded-Proto
  • 隐藏隐藏文件(以 . 开头的文件)
  • 静态资源缓存 1 年
  • 友好的 URL 重写规则

🔍 常见问题

Q:如何查看当前 PHP 版本和配置?

docker exec -it discuz php -v
docker exec -it discuz php -i

Q:如何进入容器调试?

docker exec -it discuz /bin/sh

Q:如何查看 Nginx 日志?

docker logs discuz

Q:master 版本会自动更新吗? A:需要手动重新构建镜像。master 镜像跟随 Gitee 源码仓库 v3.5 分支的最新提交,需要重新构建才能获取最新代码。


🤝 反馈 & 贡献


micrograils/discuz

让搭建论坛像搭积木一样简单。

Tag summary

Content type

Image

Digest

sha256:787a9fffb

Size

29.6 MB

Last updated

8 months ago

docker pull micrograils/discuz