NginxProxyManager开发环境Docker Compose配置详解
2025-07-05 05:07:53作者:廉皓灿Ida
概述
NginxProxyManager是一个基于Nginx的图形化管理工具,它简化了反向代理和SSL证书的管理工作。本文主要解析其开发环境下的Docker Compose配置,帮助开发者理解如何在本地搭建完整的开发环境。
核心服务架构
开发环境配置了多个相互关联的容器服务,共同构成了一个完整的开发测试环境:
- 主应用服务(fullstack):包含NginxProxyManager的核心功能
- 数据库服务:提供MariaDB和PostgreSQL两种数据库支持
- 辅助服务:包括DNS路由、证书颁发、API文档等支持服务
- 测试服务:用于自动化测试的Cypress容器
- 认证服务:Authentik及其相关组件
主应用服务配置
主应用服务fullstack
是整个系统的核心,其配置值得特别关注:
fullstack:
image: npm2dev:core
build:
context: ./
dockerfile: ./dev/Dockerfile
ports:
- 3080:80 # HTTP访问端口
- 3081:81 # 管理界面端口
- 3443:443 # HTTPS访问端口
environment:
DEBUG: 'true' # 启用调试模式
DEVELOPMENT: 'true' # 开发环境标识
LE_STAGING: 'true' # 使用Let's Encrypt测试环境
DB_POSTGRES_HOST: 'db-postgres' # PostgreSQL连接配置
DB_POSTGRES_PORT: '5432'
DB_POSTGRES_USER: 'npm'
DB_POSTGRES_PASSWORD: 'npmpass'
DB_POSTGRES_NAME: 'npm'
开发环境特别配置了:
- 调试模式开启
- 开发环境标识
- Let's Encrypt测试证书服务
- PostgreSQL数据库连接
数据库服务配置
开发环境同时配置了MariaDB和PostgreSQL两种数据库:
MariaDB配置:
db:
image: jc21/mariadb-aria
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
PostgreSQL配置:
db-postgres:
image: postgres:latest
environment:
POSTGRES_USER: 'npm'
POSTGRES_PASSWORD: 'npmpass'
POSTGRES_DB: 'npm'
这种双数据库配置使得开发者可以测试应用在不同数据库下的表现。
辅助服务详解
- 证书服务(stepca):提供本地证书颁发机构功能,用于测试SSL证书申请流程
- DNS路由(dnsrouter):处理本地开发环境的DNS解析
- API文档(swagger):在3082端口提供API文档界面
- 网络中转服务(squid):提供HTTP中转功能,可用于测试中转场景
- PowerDNS(pdns):完整的DNS服务器实现,用于测试DNS相关功能
测试环境配置
Cypress测试容器配置了完整的测试环境:
cypress:
image: npm2dev:cypress
environment:
HTTP_TRANSIT: 'squid:3128' # 配置HTTP中转
HTTPS_TRANSIT: 'squid:3128' # 配置HTTPS中转
command: cypress run --browser chrome --config-file=cypress/config/ci.js
测试容器通过中转服务访问主应用,模拟真实网络环境下的测试场景。
认证服务集成
开发环境集成了Authentik身份认证系统:
authentik:
image: ghcr.io/goauthentik/server:2024.10.1
ports:
- 9000:9000 # 暴露认证管理界面
authentik-worker:
image: ghcr.io/goauthentik/server:2024.10.1
authentik-ldap:
image: ghcr.io/goauthentik/ldap:2024.10.1
完整的认证服务栈包括主服务、工作节点和LDAP服务,可用于测试NginxProxyManager与认证系统的集成。
网络与存储配置
networks:
nginx_proxy_manager:
name: npm2dev_network
volumes:
npm_data:
name: npm2dev_core_data
le_data:
name: npm2dev_le_data
开发环境配置了专用网络和多个命名卷,确保数据持久化和服务间隔离。
开发环境使用建议
- 端口映射:主服务映射了3080(HTTP)、3081(管理界面)、3443(HTTPS)端口
- 调试模式:通过环境变量启用了详细日志输出
- 证书测试:配置了Let's Encrypt测试环境,避免达到正式环境速率限制
- 多数据库支持:可自由切换测试MariaDB或PostgreSQL
- 完整测试环境:包含前端测试、API测试和集成测试所需的所有服务
注意事项
- 此配置仅适用于开发环境,生产环境需要调整安全配置
- 数据库密码等敏感信息应妥善保管
- 测试证书不被浏览器信任是正常现象
- 开发环境下性能不是首要考虑因素
通过这套Docker Compose配置,开发者可以快速搭建包含所有依赖的完整开发环境,专注于NginxProxyManager的功能开发和测试。