# 生产:宿主机 12364 -> 容器内 5002;容器名 infogenie-backend-go # # 推荐(不在服务器编译 Go):先在 Windows 运行 build-linux-amd64.bat 生成 dist\server, # 再执行: docker compose up -d --build # 镜像使用 Dockerfile.prebuilt,仅打包 Alpine + 二进制。 # # 若要在 Docker 内多阶段编译,改用: docker compose -f docker-compose.yml -f docker-compose.sourcebuild.yml up -d --build # # ========== 前端连不上 Docker 后端时排查 ========== # 1) 容器是否起来: docker ps 看 infogenie-backend-go;宿主机 curl http://127.0.0.1:12364/api/health # 2) .env.production 里 DB_HOST/REDIS_ADDR:容器内 127.0.0.1 是容器自己,不是宿主机。 # MySQL/Redis 在宿主机时:Linux 常用 172.17.0.1 或宿主机内网 IP;Docker Desktop 可用 host.docker.internal # 3) REDIS_ENABLED=true 时 Redis 必须可达,否则进程启动失败(main 里 cache.Init 会报错退出) # 4) 前端生产构建的 VITE_API_URL 必须是浏览器能访问的地址(HTTPS 域名反代到 12364,或公网 IP+端口), # 勿指向仅内网可达的 IP;与 env.js 里生产默认 https://infogenie.api.shumengya.top 一致时需 DNS/反代已配置 # 5) 云服务器安全组/防火墙放行 12364(若直连端口) services: infogenie-backend-go: build: context: . dockerfile: Dockerfile.prebuilt image: infogenie-backend-go:latest container_name: infogenie-backend-go ports: - "12364:5002" env_file: - .env.production environment: APP_ENV: production restart: unless-stopped