Docker Compose 部署
本方案适用于容器化云原生基础设施。仓库提供经过加固的 Dockerfile 与 Compose 示例,示例会在本地构建镜像;除非另行核对镜像来源,否则不要把 cheesewaf:dev 当作厂商签名或已发布到可信仓库的镜像。运行时默认使用专用非 root 用户(UID 10001)并启用只读根文件系统。
容器资源由宿主机和容器限制共同决定。逻辑核数不超过 2 或内存不超过 2 GB 时,初始化向导会推荐 low;探测失败或超时也会回退到 low。Compose 示例只把管理端口绑定到宿主机回环地址 127.0.0.1:9443。storage.profile: production 当前仍会因生产接线不完整而拒绝启动,不会回退到 SQLite。
编排配置(Compose 文件)
参考项目仓库中的 deploy/docker/docker-compose.yml:
本地自行构建镜像时,构建上下文(context)须指向 CheeseWAF 项目的根目录,以确保 Web 前端源码(web/)与后端 Go 模块均能正常参与多阶段构建。
示例中的 8080:8080 会把数据平面监听器发布到 Docker 宿主机所有网卡。请配置明确的防火墙/反向代理策略,或将其绑定到受控网卡;只有管理端口默认绑定宿主机回环地址。
启动与初始化
执行以下命令在后台启动容器并观察日志:
容器首次启动时会自动在持久化目录生成初始管理员配置,并为管理平面签发自签名证书。本 Compose 文件将管理端口仅绑定到 Docker 宿主机回环地址(127.0.0.1:9443),请在宿主机浏览器中打开 https://127.0.0.1:9443/setup。从其他机器访问时,请先将 CHEESEWAF_SSH_TARGET 设置为 SSH 目标,再执行 ssh -N -L 9443:127.0.0.1:9443 "$CHEESEWAF_SSH_TARGET" 建立隧道,之后仍使用同一回环地址;如需直接暴露端口,请显式修改绑定并配置相应的访问控制。亦可执行以下命令通过容器终端进行 CLI 初始化:
首次初始化尚未完成时,容器日志不会打印初始化 Token 或完整地址,只显示基础 /setup 地址、受保护的 /var/lib/cheesewaf/setup.url 路径和不含秘密的随机回执。请在 10 分钟有效期内从权限为 0600 的文件读取完整地址。初始化完成后,Token 会被撤销;过期的 setup.url 文件会被清理。
停止容器(docker compose -f deploy/docker/docker-compose.yml down)时,SQLite 数据、证书、自定义规则和日志会保存在命名卷 cheesewaf-data 与 cheesewaf-logs 中。配置 storage.postgresql 时,它接收外部访问日志;默认 storage.profile: temporary 下,Docker 卷仍保存管理数据库。预留的 production 配置当前会在启动时拒绝。