Nginx Proxy Manager 开发环境 Docker Compose 配置解析
2025-07-05 05:07:08作者:余洋婵Anita
开发环境与生产环境的区别
在开始分析这个 Docker Compose 配置文件之前,需要特别强调:这是一个专门为开发环境设计的配置,文件顶部明确标注了"WARNING: This is a DEVELOPMENT docker-compose file, it should not be used for production."。开发环境配置与生产环境有几个关键区别:
- 使用了开发专用的 Docker 镜像 (
nginxproxymanager:dev
) - 启用了调试模式 (
DEBUG: 'true'
) - 使用了 Let's Encrypt 的测试环境 (
LE_STAGING: 'true'
) - 映射了本地源代码目录到容器中,便于实时开发调试
核心服务配置分析
npm (Nginx Proxy Manager 核心服务)
这个服务是 Nginx Proxy Manager 的核心组件,配置要点包括:
-
端口映射:
- 80 → 3080 (HTTP)
- 81 → 3081 (管理界面)
- 443 → 3443 (HTTPS) 这种非标准端口映射是为了避免与本地可能运行的其他服务冲突。
-
环境变量:
PUID
/PGID
:设置运行权限FORCE_COLOR
:强制彩色日志输出- 数据库连接信息:指向名为
db
的 MySQL 服务 - 开发专用标志:
DEBUG
和DEVELOPMENT
-
卷挂载:
- 数据持久化:
npm_data
和le_data
- 源代码映射:将本地
backend
、frontend
和global
目录映射到容器中,实现代码实时更新
- 数据持久化:
db (数据库服务)
数据库服务使用了专门优化的 jc21/mariadb-aria
镜像,配置特点:
- 端口 3306 映射到主机的 33306,便于开发调试时直接连接
- 设置了 root 用户和应用用户相同的密码(开发环境简化配置)
- 数据持久化到
db_data
卷
网络与数据持久化
-
网络配置:
- 创建了名为
npm_network
的专用网络 - 所有服务都加入该网络,便于服务间通信
- 创建了名为
-
卷配置:
- 三个命名卷分别用于核心数据、Let's Encrypt 证书和数据库数据
- 使用
name
属性显式命名,便于管理
开发环境特有功能
-
源代码热加载:
- 通过将本地源代码目录映射到容器中,开发者可以实时修改代码而无需重建镜像
-
调试支持:
DEBUG: 'true'
启用详细日志输出FORCE_COLOR: 1
使日志更易读
-
安全证书测试:
LE_STAGING: 'true'
使用 Let's Encrypt 的测试环境,避免生产环境请求限制
使用建议
对于想要参与 Nginx Proxy Manager 开发的用户,这个 Docker Compose 文件提供了完整的开发环境配置。使用时需要注意:
- 确保本地有完整的代码仓库,因为配置中映射了多个源代码目录
- 开发完成后,应使用专门的构建流程生成生产环境镜像
- 数据库密码等敏感信息在开发环境中使用了简化配置,生产环境必须修改
这个配置充分考虑了开发便利性,是参与 Nginx Proxy Manager 项目开发的理想起点。