services: frontend: image: heavrnl/nexus-terminal-frontend:latest container_name: nexus-terminal-frontend ports: - "18111:80" depends_on: - backend - rdp - vnc networks: - nexus-terminal-network backend: image: heavrnl/nexus-terminal-backend:latest container_name: nexus-terminal-backend env_file: - .env environment: NODE_ENV: production PORT: 3001 RDP_BACKEND_API_BASE: http://rdp:9090 VNC_BACKEND_API_BASE: http://vnc:9091 volumes: - ./data:/app/data networks: - nexus-terminal-network rdp: image: heavrnl/nexus-terminal-rdp:latest container_name: nexus-terminal-rdp environment: GUACD_HOST: guacd GUACD_PORT: 4822 API_PORT: 9090 GUAC_WS_PORT: 8081 FRONTEND_URL: http://frontend MAIN_BACKEND_URL: http://backend:3001 NODE_ENV: production networks: - nexus-terminal-network depends_on: - guacd - backend vnc: container_name: nexus-vnc image: nexus-vnc # 确保这个标签与 docker-compose.build.yml 或直接构建命令中的标签一致 build: context: ./packages/vnc dockerfile: Dockerfile ports: - "9091:9091" # VNC API port - "8082:8082" # VNC WebSocket port environment: GUACD_HOSTNAME: guacd GUACD_PORT: 4822 VNC_PORT: 9091 VNC_WS_PORT: 8082 ENCRYPTION_KEY: ${ENCRYPTION_KEY} # 复用 RDP 的密钥 FRONTEND_URL: ${FRONTEND_URL} MAIN_BACKEND_URL: ${MAIN_BACKEND_URL} NODE_ENV: production restart: unless-stopped networks: - nexus-terminal-network depends_on: - guacd - backend guacd: image: guacamole/guacd:latest container_name: nexus-terminal-guacd networks: - nexus-terminal-network restart: unless-stopped networks: nexus-terminal-network: driver: bridge name: nexus-terminal-network enable_ipv6: true ipam: config: - subnet: fd01::/80 gateway: fd01::1