更改本地dev常见端口
This commit is contained in:
@@ -18,9 +18,9 @@
|
||||
|
||||
脚本会自动启动 MySQL、Redis、MinIO,首次初始化数据库结构,并同时启动后端和前端。
|
||||
|
||||
前端地址:`http://localhost:5173`
|
||||
前端地址:`http://localhost:5189`
|
||||
|
||||
后台地址默认:`http://localhost:5173/admin/login`。可通过 `VITE_ADMIN_BASE_PATH` 调整后台页面入口。
|
||||
后台地址默认:`http://localhost:5189/admin/login`。可通过 `VITE_ADMIN_BASE_PATH` 调整后台页面入口。
|
||||
|
||||
如需拆分调试,可手动执行:
|
||||
|
||||
@@ -31,7 +31,7 @@ cd backend
|
||||
cp .env.example .env
|
||||
go run github.com/pressly/goose/v3/cmd/goose@v3.27.1 \
|
||||
-dir migrations \
|
||||
mysql 'hfb:secret@tcp(127.0.0.1:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true' \
|
||||
mysql 'hfb:secret@tcp(127.0.0.1:13306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true' \
|
||||
up
|
||||
go run ./cmd/api
|
||||
|
||||
@@ -63,7 +63,7 @@ npm run dev
|
||||
- 归还流程已支持租客提交归还、号主确认归还,完成后账号重新上架。
|
||||
- 后端已接入开发态订单超时扫描任务,会按系统配置处理交接超时、确认收号超时、逾期未归还和确认归还超时。
|
||||
- 文件上传已接入 MinIO,发布账号资产截图和申诉证据可上传 JPG、PNG、WebP 或 PDF。
|
||||
- 如果本机有代理工具占用 `127.0.0.1:9000`,MinIO 开发地址使用 `http://localhost:9000`。
|
||||
- MinIO 开发地址默认使用 `http://localhost:19090`,控制台默认使用 `http://localhost:19091`。
|
||||
- 钱包账务当前为开发态模拟流水,可通过 `GET /api/wallet/balance` 和 `GET /api/wallet/ledger` 查看。
|
||||
- 后台资金流水已接入,支持按用户、订单和业务类型查询。
|
||||
- 站内信已支持订单关键节点自动写入,可通过 `GET /api/notifications` 查看。
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
APP_ENV=development
|
||||
APP_ADDR=:8080
|
||||
APP_ADDR=:18088
|
||||
|
||||
# MySQL 容器初始化变量,同时供后端 DSN 使用。
|
||||
MYSQL_ROOT_PASSWORD=rootsecret
|
||||
MYSQL_DATABASE=hfb_sys
|
||||
MYSQL_USER=hfb
|
||||
MYSQL_PASSWORD=secret
|
||||
MYSQL_DSN=hfb:secret@tcp(127.0.0.1:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local
|
||||
MYSQL_DSN=hfb:secret@tcp(127.0.0.1:13306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local
|
||||
|
||||
REDIS_ADDR=127.0.0.1:6379
|
||||
REDIS_ADDR=127.0.0.1:16379
|
||||
REDIS_PASSWORD=
|
||||
REDIS_DB=0
|
||||
|
||||
@@ -35,7 +35,7 @@ LOG_ENABLE_FILE=true
|
||||
# MinIO 容器初始化变量,同时供后端对象存储使用。
|
||||
MINIO_ROOT_USER=minioadmin
|
||||
MINIO_ROOT_PASSWORD=minioadmin
|
||||
STORAGE_ENDPOINT=http://localhost:9000
|
||||
STORAGE_ENDPOINT=http://localhost:19090
|
||||
STORAGE_BUCKET=hfb-sys
|
||||
STORAGE_ACCESS_KEY_ID=minioadmin
|
||||
STORAGE_SECRET_ACCESS_KEY=minioadmin
|
||||
|
||||
@@ -69,9 +69,9 @@ type RateLimitConfig struct {
|
||||
func Load() Config {
|
||||
return Config{
|
||||
AppEnv: getEnv("APP_ENV", "development"),
|
||||
AppAddr: getEnv("APP_ADDR", ":8080"),
|
||||
MySQLDSN: getEnv("MYSQL_DSN", "hfb:secret@tcp(127.0.0.1:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local"),
|
||||
RedisAddr: getEnv("REDIS_ADDR", "127.0.0.1:6379"),
|
||||
AppAddr: getEnv("APP_ADDR", ":18088"),
|
||||
MySQLDSN: getEnv("MYSQL_DSN", "hfb:secret@tcp(127.0.0.1:13306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local"),
|
||||
RedisAddr: getEnv("REDIS_ADDR", "127.0.0.1:16379"),
|
||||
RedisPassword: getEnv("REDIS_PASSWORD", ""),
|
||||
RedisDB: getEnvInt("REDIS_DB", 0),
|
||||
JWTSecret: getEnv("JWT_SECRET", "change-me"),
|
||||
@@ -87,7 +87,7 @@ func Load() Config {
|
||||
BootstrapAdminPassword: getEnv("ADMIN_BOOTSTRAP_PASSWORD", ""),
|
||||
BootstrapAdminNickname: getEnv("ADMIN_BOOTSTRAP_NICKNAME", "超级管理员"),
|
||||
Storage: StorageConfig{
|
||||
Endpoint: getEnv("STORAGE_ENDPOINT", "http://localhost:9000"),
|
||||
Endpoint: getEnv("STORAGE_ENDPOINT", "http://localhost:19090"),
|
||||
Bucket: getEnv("STORAGE_BUCKET", "hfb-sys"),
|
||||
AccessKeyID: getEnv("STORAGE_ACCESS_KEY_ID", "minioadmin"),
|
||||
SecretAccessKey: getEnv("STORAGE_SECRET_ACCESS_KEY", "minioadmin"),
|
||||
|
||||
@@ -10,7 +10,7 @@ services:
|
||||
MYSQL_PASSWORD: secret
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "3306:3306"
|
||||
- "${DEV_MYSQL_PORT:-13306}:3306"
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
healthcheck:
|
||||
@@ -24,7 +24,7 @@ services:
|
||||
container_name: hfb-redis
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "6379:6379"
|
||||
- "${DEV_REDIS_PORT:-16379}:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
@@ -43,8 +43,8 @@ services:
|
||||
MINIO_ROOT_PASSWORD: minioadmin
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
- "${DEV_MINIO_API_PORT:-19090}:9000"
|
||||
- "${DEV_MINIO_CONSOLE_PORT:-19091}:9001"
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
healthcheck:
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
你这样配置,直接运行 `cloudflared tunnel run` 是**不能**成功把 `5173` 转发出去的。
|
||||
你这样配置,直接运行 `cloudflared tunnel run` 是**不能**成功把 `5189` 转发出去的。
|
||||
|
||||
虽然你用第一条命令把域名 `221329.cc.cd` 绑定到了你的隧道上,但第二条命令在执行时,**`--url` 参数会被直接忽略掉**。
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
`cloudflared` 的设计逻辑是:
|
||||
当你使用 **命名隧道(Named Tunnel,即你创建的 `mac-mini-tunnel`)** 时,它**强制要求**使用本地的 `config.yml` 配置文件来管理转发规则(Ingress Rules),或者通过 Cloudflare 网页后台(Zero Trust Dashboard)来配置。
|
||||
|
||||
你在命令行里强行拼凑的 `--url http://localhost:5173` 只有在运行临时隧道(Quick Tunnels,不指定隧道名的那种)时才会生效。
|
||||
你在命令行里强行拼凑的 `--url http://localhost:5189` 只有在运行临时隧道(Quick Tunnels,不指定隧道名的那种)时才会生效。
|
||||
|
||||
---
|
||||
|
||||
@@ -28,7 +28,7 @@ credentials-file: /Users/你的用户名/.cloudflared/你的隧道ID.json
|
||||
|
||||
ingress:
|
||||
- hostname: 221329.cc.cd
|
||||
service: http://localhost:5173
|
||||
service: http://localhost:5189
|
||||
- service: http_status:404
|
||||
|
||||
```
|
||||
@@ -44,4 +44,4 @@ cloudflared tunnel run mac-mini-tunnel
|
||||
|
||||
cloudflared tunnel route dns mac-mini-tunnel 221329.cc.cd
|
||||
|
||||
cloudflared tunnel run --url http://localhost:5173 mac-mini-tunnel
|
||||
cloudflared tunnel run --url http://localhost:5189 mac-mini-tunnel
|
||||
|
||||
@@ -51,6 +51,10 @@ function stripVantRemoteIconFont() {
|
||||
}
|
||||
}
|
||||
|
||||
const frontendPort = Number(process.env.DEV_FRONTEND_PORT || process.env.PORT || 5189)
|
||||
const backendPort = Number(process.env.DEV_BACKEND_PORT || 18088)
|
||||
const apiProxyTarget = process.env.VITE_API_PROXY_TARGET || `http://127.0.0.1:${backendPort}`
|
||||
|
||||
export default defineConfig({
|
||||
// 禁止 vite 清屏,避免把后端启动日志(GIN 路由、迁移等)从终端滚动缓冲里抹掉
|
||||
clearScreen: false,
|
||||
@@ -74,9 +78,10 @@ export default defineConfig({
|
||||
},
|
||||
},
|
||||
server: {
|
||||
port: 5173,
|
||||
port: frontendPort,
|
||||
strictPort: true,
|
||||
proxy: {
|
||||
'/api': 'http://127.0.0.1:8080',
|
||||
'/api': apiProxyTarget,
|
||||
},
|
||||
allowedHosts: [
|
||||
'221329.cc.cd',
|
||||
|
||||
+39
-11
@@ -12,8 +12,12 @@ FRONTEND_NODE_MODULES="${FRONTEND_DIR}/node_modules"
|
||||
FRONTEND_NODE_MODULES_LOCK="${FRONTEND_NODE_MODULES}/.package-lock.json"
|
||||
MIGRATIONS_DIR="${ROOT_DIR}/backend/migrations"
|
||||
MYSQL_DATABASE="${DEV_MYSQL_DATABASE:-hfb_sys}"
|
||||
BACKEND_PORT="${DEV_BACKEND_PORT:-8080}"
|
||||
FRONTEND_PORT="${DEV_FRONTEND_PORT:-5173}"
|
||||
BACKEND_PORT="${DEV_BACKEND_PORT:-18088}"
|
||||
FRONTEND_PORT="${DEV_FRONTEND_PORT:-5189}"
|
||||
MYSQL_PORT="${DEV_MYSQL_PORT:-13306}"
|
||||
REDIS_PORT="${DEV_REDIS_PORT:-16379}"
|
||||
MINIO_API_PORT="${DEV_MINIO_API_PORT:-19090}"
|
||||
MINIO_CONSOLE_PORT="${DEV_MINIO_CONSOLE_PORT:-19091}"
|
||||
BACKEND_HEALTH_URL="${DEV_BACKEND_HEALTH_URL:-http://127.0.0.1:${BACKEND_PORT}/health}"
|
||||
FRONTEND_HEALTH_URL="${DEV_FRONTEND_HEALTH_URL:-http://127.0.0.1:${FRONTEND_PORT}/}"
|
||||
HTTP_READY_TIMEOUT="${DEV_HTTP_READY_TIMEOUT:-120}"
|
||||
@@ -71,13 +75,21 @@ show_help() {
|
||||
DEV_RESET_DB=1 等同于 --reset-db
|
||||
DEV_MYSQL_DATABASE=hfb_sys
|
||||
开发数据库名
|
||||
DEV_BACKEND_PORT=8080
|
||||
DEV_BACKEND_PORT=18088
|
||||
后端启动端口
|
||||
DEV_FRONTEND_PORT=5173
|
||||
DEV_FRONTEND_PORT=5189
|
||||
前端启动端口
|
||||
DEV_BACKEND_HEALTH_URL=http://127.0.0.1:8080/health
|
||||
DEV_MYSQL_PORT=13306
|
||||
MySQL 宿主机映射端口
|
||||
DEV_REDIS_PORT=16379
|
||||
Redis 宿主机映射端口
|
||||
DEV_MINIO_API_PORT=19090
|
||||
MinIO API 宿主机映射端口
|
||||
DEV_MINIO_CONSOLE_PORT=19091
|
||||
MinIO 控制台宿主机映射端口
|
||||
DEV_BACKEND_HEALTH_URL=http://127.0.0.1:18088/health
|
||||
后端健康检查地址
|
||||
DEV_FRONTEND_HEALTH_URL=http://127.0.0.1:5173/
|
||||
DEV_FRONTEND_HEALTH_URL=http://127.0.0.1:5189/
|
||||
前端健康检查地址
|
||||
DEV_HTTP_READY_TIMEOUT=120
|
||||
HTTP 服务就绪等待秒数
|
||||
@@ -422,7 +434,7 @@ goose_dsn() {
|
||||
}
|
||||
|
||||
dev_goose_dsn() {
|
||||
goose_dsn "hfb:secret@tcp(127.0.0.1:3306)/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True&loc=Local"
|
||||
goose_dsn "hfb:secret@tcp(127.0.0.1:${MYSQL_PORT})/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True&loc=Local"
|
||||
}
|
||||
|
||||
goose_cmd() {
|
||||
@@ -458,10 +470,14 @@ start_backend() {
|
||||
cp "${BACKEND_ENV_EXAMPLE}" "${BACKEND_ENV}"
|
||||
fi
|
||||
|
||||
log "启动后端:http://localhost:8080"
|
||||
log "启动后端:http://localhost:${BACKEND_PORT}"
|
||||
(
|
||||
cd "${ROOT_DIR}/backend"
|
||||
load_env_file "${BACKEND_ENV}"
|
||||
export APP_ADDR=":${BACKEND_PORT}"
|
||||
export MYSQL_DSN="hfb:secret@tcp(127.0.0.1:${MYSQL_PORT})/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True&loc=Local"
|
||||
export REDIS_ADDR="127.0.0.1:${REDIS_PORT}"
|
||||
export STORAGE_ENDPOINT="http://localhost:${MINIO_API_PORT}"
|
||||
go run ./cmd/api
|
||||
) &
|
||||
BACKEND_PID="$!"
|
||||
@@ -513,9 +529,12 @@ ensure_frontend_dependencies() {
|
||||
start_frontend() {
|
||||
ensure_frontend_dependencies
|
||||
|
||||
log "启动前端:http://localhost:5173"
|
||||
log "启动前端:http://localhost:${FRONTEND_PORT}"
|
||||
(
|
||||
cd "${FRONTEND_DIR}"
|
||||
export DEV_FRONTEND_PORT="${FRONTEND_PORT}"
|
||||
export DEV_BACKEND_PORT="${BACKEND_PORT}"
|
||||
export VITE_API_PROXY_TARGET="${VITE_API_PROXY_TARGET:-http://127.0.0.1:${BACKEND_PORT}}"
|
||||
npm run dev
|
||||
) &
|
||||
FRONTEND_PID="$!"
|
||||
@@ -558,7 +577,16 @@ main() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ensure_port_free "${MYSQL_PORT}" "MySQL" hfb-mysql
|
||||
ensure_port_free "${REDIS_PORT}" "Redis" hfb-redis
|
||||
ensure_port_free "${MINIO_API_PORT}" "MinIO API" hfb-minio
|
||||
ensure_port_free "${MINIO_CONSOLE_PORT}" "MinIO 控制台" hfb-minio
|
||||
|
||||
log "启动开发依赖:MySQL、Redis、MinIO"
|
||||
export DEV_MYSQL_PORT="${MYSQL_PORT}"
|
||||
export DEV_REDIS_PORT="${REDIS_PORT}"
|
||||
export DEV_MINIO_API_PORT="${MINIO_API_PORT}"
|
||||
export DEV_MINIO_CONSOLE_PORT="${MINIO_CONSOLE_PORT}"
|
||||
docker compose -f "${COMPOSE_FILE}" up -d
|
||||
|
||||
wait_container_healthy hfb-mysql "MySQL"
|
||||
@@ -588,8 +616,8 @@ main() {
|
||||
log_success "开发环境已启动"
|
||||
if [[ "${NO_FRONTEND}" == "0" ]]; then
|
||||
local admin_base_path="${VITE_ADMIN_BASE_PATH:-/admin}"
|
||||
log "前台:http://localhost:5173"
|
||||
log "后台:http://localhost:5173${admin_base_path%/}/login"
|
||||
log "前台:http://localhost:${FRONTEND_PORT}"
|
||||
log "后台:http://localhost:${FRONTEND_PORT}${admin_base_path%/}/login"
|
||||
fi
|
||||
|
||||
log "按 Ctrl+C 停止前后端;Docker 依赖会保留运行"
|
||||
|
||||
Reference in New Issue
Block a user