首页
/ NginxProxyManager开发环境Docker Compose配置详解

NginxProxyManager开发环境Docker Compose配置详解

2025-07-05 05:07:53作者:廉皓灿Ida

概述

NginxProxyManager是一个基于Nginx的图形化管理工具,它简化了反向代理和SSL证书的管理工作。本文主要解析其开发环境下的Docker Compose配置,帮助开发者理解如何在本地搭建完整的开发环境。

核心服务架构

开发环境配置了多个相互关联的容器服务,共同构成了一个完整的开发测试环境:

  1. 主应用服务(fullstack):包含NginxProxyManager的核心功能
  2. 数据库服务:提供MariaDB和PostgreSQL两种数据库支持
  3. 辅助服务:包括DNS路由、证书颁发、API文档等支持服务
  4. 测试服务:用于自动化测试的Cypress容器
  5. 认证服务: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'

这种双数据库配置使得开发者可以测试应用在不同数据库下的表现。

辅助服务详解

  1. 证书服务(stepca):提供本地证书颁发机构功能,用于测试SSL证书申请流程
  2. DNS路由(dnsrouter):处理本地开发环境的DNS解析
  3. API文档(swagger):在3082端口提供API文档界面
  4. 网络中转服务(squid):提供HTTP中转功能,可用于测试中转场景
  5. 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

开发环境配置了专用网络和多个命名卷,确保数据持久化和服务间隔离。

开发环境使用建议

  1. 端口映射:主服务映射了3080(HTTP)、3081(管理界面)、3443(HTTPS)端口
  2. 调试模式:通过环境变量启用了详细日志输出
  3. 证书测试:配置了Let's Encrypt测试环境,避免达到正式环境速率限制
  4. 多数据库支持:可自由切换测试MariaDB或PostgreSQL
  5. 完整测试环境:包含前端测试、API测试和集成测试所需的所有服务

注意事项

  1. 此配置仅适用于开发环境,生产环境需要调整安全配置
  2. 数据库密码等敏感信息应妥善保管
  3. 测试证书不被浏览器信任是正常现象
  4. 开发环境下性能不是首要考虑因素

通过这套Docker Compose配置,开发者可以快速搭建包含所有依赖的完整开发环境,专注于NginxProxyManager的功能开发和测试。