# NewAPI Middleware Tool - Docker Compose Configuration # # 使用方式: # 1. 通过 install.sh 一键安装 (推荐) # 2. 通过 deploy.sh 自动部署: ./deploy.sh # 3. 手动部署: 复制 .env.example 为 .env 并配置后运行 docker-compose up -d # # 更新方式: # docker compose pull && docker compose down && docker compose up -d services: newapi-tools: image: ghcr.io/james-6-23/new_api_tools:latest container_name: newapi-tools ports: # FRONTEND_BIND 控制端口绑定的网卡: # - 0.0.0.0(默认):所有网卡可达,浏览器可直连 IP:1145 # - 127.0.0.1 :仅本机,需要在宿主机配 nginx 反代到 https://your-domain - "${FRONTEND_BIND:-0.0.0.0}:${FRONTEND_PORT:-1145}:80" environment: # 数据库配置 (Go 版本统一使用 SQL_DSN) - SQL_DSN=${SQL_DSN:-} # 兼容旧版本分离配置 - DB_ENGINE=${DB_ENGINE:-} - DB_DNS=${DB_DNS:-} - DB_PORT=${DB_PORT:-} - DB_NAME=${DB_NAME:-} - DB_USER=${DB_USER:-} - DB_PASSWORD=${DB_PASSWORD:-} # 连接池(可选) - DB_MAX_OPEN_CONNS=${DB_MAX_OPEN_CONNS:-} - DB_MAX_IDLE_CONNS=${DB_MAX_IDLE_CONNS:-} # 认证 - API_KEY=${API_KEY} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - JWT_SECRET_KEY=${JWT_SECRET} - JWT_EXPIRE_HOURS=${JWT_EXPIRE_HOURS:-24} # Redis 缓存 - REDIS_CONN_STRING=redis://:${REDIS_PASSWORD:-}@redis:6379/0 # 服务配置 # SERVER_HOST 默认 127.0.0.1(仅供容器内 Nginx 反代访问,对外端口由 Nginx 暴露) # 如需让其他容器/宿主机直连 Go 后端 8000,可在 .env 中改为 0.0.0.0(不推荐,安全风险) - SERVER_HOST=${SERVER_HOST:-127.0.0.1} - SERVER_PORT=8000 - TIMEZONE=${TIMEZONE:-Asia/Shanghai} - LOG_LEVEL=${LOG_LEVEL:-info} # NewAPI 连接 - NEWAPI_BASEURL=${NEWAPI_BASEURL:-} volumes: - ./data:/app/data restart: unless-stopped # 用于 NewAPI 以 network_mode: host 部署的场景:DSN 中的 127.0.0.1 # 会被 deploy.sh 改写为 host.docker.internal,靠这条解析到宿主机网关。 extra_hosts: - "host.docker.internal:host-gateway" depends_on: redis: condition: service_healthy logging: driver: "json-file" options: max-size: "50m" max-file: "3" healthcheck: test: ["CMD", "curl", "-f", "http://localhost/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s networks: - default - newapi-network # Redis 缓存服务 redis: image: redis:7-alpine container_name: newapi-tools-redis command: > redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}} volumes: - redis_data:/data restart: unless-stopped networks: - default healthcheck: test: ["CMD-SHELL", "redis-cli ${REDIS_PASSWORD:+-a ${REDIS_PASSWORD}} ping | grep -q PONG"] interval: 5s timeout: 3s retries: 3 start_period: 2s networks: default: newapi-network: external: true name: ${NEWAPI_NETWORK:-new-api_default} volumes: redis_data: