micro_proxy 0.2.2

A tool for managing micro-applications with Docker and Nginx
Documentation

# micro_proxy配置文件示例
# 复制此文件为 proxy-config.yml 并根据需要修改

# 扫描目录列表(支持多个目录)
# 用于自动发现 Static 和 Api 类型的微应用
scan_dirs:
  - "./micro-apps"
  - "./additional-apps"

# Nginx配置文件输出路径
nginx_config_path: "./nginx.conf"

# Docker Compose配置文件输出路径
compose_config_path: "./docker-compose.yml"

# 状态文件路径
state_file_path: "./proxy-config.state"

# 网络地址列表输出路径
network_list_path: "./network-addresses.txt"

# Docker网络名称
network_name: "proxy-network"

# Nginx监听的主机端口(统一入口)
nginx_host_port: 8080

# Web根目录(可选)
# 用于存放 ACME 验证文件,支持 Let's Encrypt 证书申请
# acme.sh 会在该目录下创建 .well-known/acme-challenge/ 目录
# 默认值: "/var/www/html"
# 如果不需要配置 HTTPS 证书,可以不设置此字段,或注释掉
# web_root: "/var/www/html"

# 证书目录(可选)
# 主机上存放 SSL 证书的目录
# acme.sh 会将生成的证书部署到此目录
# 默认值: "/etc/nginx/certs"
# 如果不需要配置 HTTPS 证书,可以不设置此字段,或注释掉
# cert_dir: "/etc/nginx/certs"

# 域名(可选)
# 用于配置 HTTPS。如果配置了此字段且证书文件存在,nginx 将启用 HTTPS
# 证书文件命名规则: {cert_dir}/{domain}.cer (或 .crt)
# 密钥文件命名规则: {cert_dir}/{domain}.key
# 示例:
# domain: "example.com"

# 反向代理配置(手动配置)
apps:
  # 主应用(静态网站)
  # Static 和 Api 类型:name 必须与 scan_dirs 中扫描到的文件夹名称一致
  - name: "main-app"
    routes: ["/"]  # 支持多个路径
    container_name: "craftaidhub-main"
    container_port: 80
    app_type: "static"
    description: "主入口网站"
    
  # 简历应用(静态网站)
  - name: "resume-app"
    routes: ["/resume_app", "/resume"]  # 支持多个路径
    container_name: "resume-agent-frontend"
    container_port: 80
    app_type: "static"
    description: "简历应用"
    
  # API服务
  - name: "api-service"
    routes: ["/api", "/api/v1"]  # 支持多个路径
    container_name: "api-service"
    container_port: 3000
    app_type: "api"
    description: "后端API服务"
    nginx_extra_config: |
      # 添加CORS头
      add_header 'Access-Control-Allow-Origin' '*' always;
      add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
      add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;

  # 内部服务(如 Redis、MySQL 等)
  # Internal 类型:不需要 nginx 反向代理,仅用于微应用间内部通信
  # 必须配置 path 字段,指向包含 Dockerfile 的文件夹路径
  # 文件夹内应包含:Dockerfile, .env, setup.sh(可选), clean.sh(可选)
  - name: "redis"
    routes: []  # Internal 类型 routes 为空
    container_name: "redis-container"
    container_port: 6379
    app_type: "internal"
    description: "Redis 缓存服务"
    path: "./services/redis"  # 必须配置,指向服务文件夹路径

  # 更多内部服务示例
  # - name: "mysql"
  #   routes: []
  #   container_name: "mysql-container"
  #   container_port: 3306
  #   app_type: "internal"
  #   description: "MySQL 数据库服务"
  #   path: "./services/mysql"