Docker 安装(外部 Nginx)
这种方式里,NocoBase 应用容器和 Nginx 容器分别运行。你可以先按 Docker 安装(内置 Nginx) 完成基础安装,再把入口切换为外部 Nginx 容器。
什么时候用这种方式
- 希望把 NocoBase 和 Web 服务器分开部署
- 希望自己维护 Nginx 配置和端口暴露
- 希望只对外暴露代理容器,应用容器只在内部网络通信
docker-compose.yml 示例
下面的示例使用镜像:nocobase/nocobase:latest-full-no-nginx。
这里的 13000:80 只是为了本地测试方便,避免直接占用宿主机的标准端口。生产环境通常不会继续使用 13000:80,而是让外部 Nginx 直接映射宿主机的 80 和 443。
关键点
NOCOBASE_EXTRACT_CLIENT_ASSETS=true用于提取前端静态资源,并生成代理配置NOCOBASE_PROXY_PROVIDER=nginx表示生成 Nginx 配置NOCOBASE_PROXY_UPSTREAM_HOST=app表示让 Nginx 容器通过 Compose 网络访问app服务./storage需要同时挂载到app和nginx容器,方便共享代理配置、静态资源和 上传文件nginx容器启动前需要等待nocobase.conf生成,再通过ln -sf链接到/etc/nginx/conf.d/default.conf- 自动生成的配置会把
APP_PUBLIC_PATH下的/files/和根路径/files/转发到 NocoBase,用于登录鉴权后的文件预览和下载 - 如果使用外部 Nginx,只需要由
nginx容器处理这个端口映射。测试时可以先用13000:80,生产环境通常直接暴露宿主机的80和443,而app服务不需要对宿主机暴露端口
如果使用宿主机本地 Nginx
如果你的 Nginx 不是运行在 Docker 容器里,而是直接安装在宿主机上,建议单独使用一份 docker-compose.yml。这种情况下,app 需要直接对宿主机暴露端口,同时代理相关环境变量也要改成宿主机视角。
可以参考下面的 docker-compose.yml:
其中:
NOCOBASE_PROXY_STORAGE_PATH需要写成宿主机上的storage绝对路径NOCOBASE_PROXY_UPSTREAM_HOST需要改成127.0.0.1app服务需要保留ports,这样宿主机本地 Nginx 才能通过127.0.0.1:13000访问到应用
启动 app 容器后,再在宿主机上等待配置文件生成,并把它链接到本地 Nginx 配置目录:
如果你的宿主机 Nginx 没有使用 conf.d 目录,需要把链接路径改成你自己的配置目录。通常来说,保持 nocobase.conf 作为 http {} 里的 include 文件会更稳妥,不建议手动拆开后再复制内容。
如果你没有使用自动生成的配置,而是自行维护 Nginx,请确认 /files/ 及 APP_PUBLIC_PATH 下对应的文件路径会转发到 NocoBase,并且这些规则位于 SPA 回退规则之前。完整示例见 Nginx 反向代理。
相关链接
- Docker 安装(内置 Nginx) — 从单容器安装开始
- Nginx 静态资源代理 — 了解生成的 Nginx 配置

