修改常见默认端口

This commit is contained in:
yml2213
2026-08-04 15:34:34 +08:00
parent 68cf35b272
commit 569109cd92
11 changed files with 46 additions and 34 deletions
+8 -3
View File
@@ -1,14 +1,19 @@
PORT=8080 # 端口(默认值已避开常见端口,避免与其他项目冲突;如需调整可在此覆盖)
PORT=18080
FRONTEND_PORT=15173
# Caddy 对外端口:生产部署需域名绑定 80/443;本机与其他站点共存时可覆盖
# HTTP_PORT=80
# HTTPS_PORT=443
JWT_SECRET=your_very_secure_jwt_secret_here_change_me_in_production JWT_SECRET=your_very_secure_jwt_secret_here_change_me_in_production
DATA_ENCRYPTION_KEY=your_32_plus_char_data_encryption_key_change_me DATA_ENCRYPTION_KEY=your_32_plus_char_data_encryption_key_change_me
POSTGRES_USER=affiliate POSTGRES_USER=affiliate
POSTGRES_PASSWORD=affiliate_dev_password POSTGRES_PASSWORD=affiliate_dev_password
POSTGRES_DB=affiliate_dash POSTGRES_DB=affiliate_dash
POSTGRES_PORT=5432 POSTGRES_PORT=15432
COMPOSE_PROJECT_NAME=affiliate_dash COMPOSE_PROJECT_NAME=affiliate_dash
POSTGRES_DATA_VOLUME=affiliate_dash_postgres_data POSTGRES_DATA_VOLUME=affiliate_dash_postgres_data
TZ=Asia/Shanghai TZ=Asia/Shanghai
DATABASE_URL="postgres://affiliate:affiliate_dev_password@127.0.0.1:5432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai" DATABASE_URL="postgres://affiliate:affiliate_dev_password@127.0.0.1:15432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai"
# Docker 后端容器内连接串通常不需要改;需要外部数据库时再覆盖。 # Docker 后端容器内连接串通常不需要改;需要外部数据库时再覆盖。
# DOCKER_DATABASE_URL="postgres://affiliate:affiliate_dev_password@postgres:5432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai" # DOCKER_DATABASE_URL="postgres://affiliate:affiliate_dev_password@postgres:5432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai"
GIN_MODE=release GIN_MODE=release
+4 -3
View File
@@ -21,9 +21,10 @@ install:
# 停止占用默认端口的进程 # 停止占用默认端口的进程
stop: stop:
@-lsof -tiTCP:8080 -sTCP:LISTEN | xargs kill 2>/dev/null || true @-lsof -tiTCP:18080 -sTCP:LISTEN | xargs kill 2>/dev/null || true
@-lsof -tiTCP:5173 -sTCP:LISTEN | xargs kill 2>/dev/null || true @-lsof -tiTCP:15173 -sTCP:LISTEN | xargs kill 2>/dev/null || true
@echo "已尝试停止 8080 / 5173 端口服务" @-lsof -tiTCP:15432 -sTCP:LISTEN | xargs kill 2>/dev/null || true
@echo "已尝试停止 18080 / 15173 / 15432 端口服务"
# Docker 部署:宿主机只需要 Docker/Compose,前端与后端都在镜像内构建 # Docker 部署:宿主机只需要 Docker/Compose,前端与后端都在镜像内构建
docker-build: docker-build:
+12 -10
View File
@@ -36,8 +36,8 @@ make dev
`make dev` 会通过 Docker Compose 启动 `affiliate_dash/postgres`,后端和前端仍在宿主机运行,方便热更新。首次从旧版 `affiliate_dash_postgres_dev` 开发容器迁移时,脚本会停止旧容器并优先复用旧数据卷。 `make dev` 会通过 Docker Compose 启动 `affiliate_dash/postgres`,后端和前端仍在宿主机运行,方便热更新。首次从旧版 `affiliate_dash_postgres_dev` 开发容器迁移时,脚本会停止旧容器并优先复用旧数据卷。
启动后: 启动后:
- 前端:`http://localhost:5173` - 前端:`http://localhost:15173`
- 后端:`http://localhost:8080` - 后端:`http://localhost:18080`
- 默认管理员:`admin` / `admin123` - 默认管理员:`admin` / `admin123`
`Ctrl+C` 停止所有服务。 `Ctrl+C` 停止所有服务。
@@ -49,8 +49,8 @@ make dev
make install make install
# 分别启动 # 分别启动
make backend # 后端 :8080 make backend # 后端 :18080
make frontend # 前端 :5173 make frontend # 前端 :15173
``` ```
## Docker 生产部署 ## Docker 生产部署
@@ -78,10 +78,10 @@ make docker-up
docker compose up -d --build docker compose up -d --build
``` ```
服务端口: 服务端口(默认值已避开常见端口,避免与其他项目冲突;均可在 `.env` 中覆盖)
- `:80` — 前端页面 + API(Caddy 统一入口) - `:80` — 前端页面 + API(Caddy 统一入口,可通过 `HTTP_PORT`/`HTTPS_PORT` 调整
- `:8080` — 后端 API(直接访问,调试用) - `:18080` — 后端 API(直接访问,调试用,可通过 `PORT` 调整
- `:5432` — PostgreSQL(本地开发/调试用,可通过 `POSTGRES_PORT` 调整) - `:15432` — PostgreSQL(本地开发/调试用,可通过 `POSTGRES_PORT` 调整)
### 常用命令 ### 常用命令
@@ -99,11 +99,13 @@ make docker-down # 停止并移除
| 变量 | 说明 | 默认值 | | 变量 | 说明 | 默认值 |
|------|------|--------| |------|------|--------|
| `PORT` | 后端端口 | `8080` | | `PORT` | 后端端口 | `18080` |
| `FRONTEND_PORT` | 前端开发端口 | `15173` |
| `HTTP_PORT` / `HTTPS_PORT` | Caddy 对外 HTTP/HTTPS 端口 | `80` / `443` |
| `JWT_SECRET` | JWT 签名密钥 | 开发默认值 | | `JWT_SECRET` | JWT 签名密钥 | 开发默认值 |
| `DATABASE_URL` | PostgreSQL 连接串 | 本地开发默认值 | | `DATABASE_URL` | PostgreSQL 连接串 | 本地开发默认值 |
| `DOCKER_DATABASE_URL` | Docker 后端容器内 PostgreSQL 连接串,通常无需设置 | Compose 内置默认值 | | `DOCKER_DATABASE_URL` | Docker 后端容器内 PostgreSQL 连接串,通常无需设置 | Compose 内置默认值 |
| `POSTGRES_PORT` | PostgreSQL 映射到宿主机的端口 | `5432` | | `POSTGRES_PORT` | PostgreSQL 映射到宿主机的端口 | `15432` |
| `COMPOSE_PROJECT_NAME` | Docker Compose 项目名 | `affiliate_dash` | | `COMPOSE_PROJECT_NAME` | Docker Compose 项目名 | `affiliate_dash` |
| `POSTGRES_DATA_VOLUME` | PostgreSQL 数据卷名 | `affiliate_dash_postgres_data` | | `POSTGRES_DATA_VOLUME` | PostgreSQL 数据卷名 | `affiliate_dash_postgres_data` |
| `GIN_MODE` | Gin 运行模式 | `debug` | | `GIN_MODE` | Gin 运行模式 | `debug` |
+2 -2
View File
@@ -60,9 +60,9 @@ func Load() *Config {
// OPEN_API_DEBUG 优先;未设置时 debug 模式默认开启 // OPEN_API_DEBUG 优先;未设置时 debug 模式默认开启
debugOpen := getEnvBool("OPEN_API_DEBUG", mode == "debug" || mode == "") debugOpen := getEnvBool("OPEN_API_DEBUG", mode == "debug" || mode == "")
return &Config{ return &Config{
Port: getEnv("PORT", "8080"), Port: getEnv("PORT", "18080"),
JWTSecret: getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me"), JWTSecret: getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me"),
DatabaseURL: getEnv("DATABASE_URL", "postgres://affiliate:affiliate_dev_password@127.0.0.1:5432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai"), DatabaseURL: getEnv("DATABASE_URL", "postgres://affiliate:affiliate_dev_password@127.0.0.1:15432/affiliate_dash?sslmode=disable&TimeZone=Asia/Shanghai"),
Mode: mode, Mode: mode,
DataEncryptionKey: getEnv("DATA_ENCRYPTION_KEY", getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me")), DataEncryptionKey: getEnv("DATA_ENCRYPTION_KEY", getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me")),
OpenAPIKey: getEnv("OPEN_API_KEY", "sk_source_dev_key_change_me"), OpenAPIKey: getEnv("OPEN_API_KEY", "sk_source_dev_key_change_me"),
+1 -1
View File
@@ -23,7 +23,7 @@ func New(t testing.TB, _ ...interface{}) *gorm.DB {
dsn = os.Getenv("DATABASE_URL") dsn = os.Getenv("DATABASE_URL")
} }
if dsn == "" { if dsn == "" {
dsn = "postgres://affiliate:affiliate_dev_password@127.0.0.1:5432/affiliate_dash?sslmode=disable" dsn = "postgres://affiliate:affiliate_dev_password@127.0.0.1:15432/affiliate_dash?sslmode=disable"
} }
cfg := &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)} cfg := &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)}
+4 -4
View File
@@ -11,7 +11,7 @@ services:
- PGTZ=${TZ:-Asia/Shanghai} - PGTZ=${TZ:-Asia/Shanghai}
command: ["postgres", "-c", "timezone=${TZ:-Asia/Shanghai}"] command: ["postgres", "-c", "timezone=${TZ:-Asia/Shanghai}"]
ports: ports:
- "${POSTGRES_PORT:-5432}:5432" - "${POSTGRES_PORT:-15432}:5432"
volumes: volumes:
- postgres-data:/var/lib/postgresql/data - postgres-data:/var/lib/postgresql/data
restart: unless-stopped restart: unless-stopped
@@ -35,7 +35,7 @@ services:
# 以宿主用户身份运行,日志文件归属正确(宿主机 logs 目录需预先 chown) # 以宿主用户身份运行,日志文件归属正确(宿主机 logs 目录需预先 chown)
user: "${HOST_UID:-1000}:${HOST_GID:-1000}" user: "${HOST_UID:-1000}:${HOST_GID:-1000}"
ports: ports:
- "8080:8080" - "${BACKEND_PORT:-18080}:8080"
environment: environment:
- PORT=8080 - PORT=8080
- TZ=${TZ:-Asia/Shanghai} - TZ=${TZ:-Asia/Shanghai}
@@ -82,8 +82,8 @@ services:
ALPINE_MIRROR: ${ALPINE_MIRROR:-https://mirrors.aliyun.com/alpine} ALPINE_MIRROR: ${ALPINE_MIRROR:-https://mirrors.aliyun.com/alpine}
image: affiliate-caddy:latest image: affiliate-caddy:latest
ports: ports:
- "80:80" - "${HTTP_PORT:-80}:80"
- "443:443" - "${HTTPS_PORT:-443}:443"
environment: environment:
- TZ=${TZ:-Asia/Shanghai} - TZ=${TZ:-Asia/Shanghai}
volumes: volumes:
+2 -2
View File
@@ -1,4 +1,4 @@
启动代理到 8080 启动代理到 18080
cloudflared tunnel run --url http://localhost:8080 mac-mini-tunnel cloudflared tunnel run --url http://localhost:18080 mac-mini-tunnel
+2 -2
View File
@@ -2,7 +2,7 @@
# 复制为 frontend/.env 后生效(Vite 仅暴露 VITE_ 前缀变量) # 复制为 frontend/.env 后生效(Vite 仅暴露 VITE_ 前缀变量)
# 开发服务器端口(也可由根目录 FRONTEND_PORT 通过 start.sh 传入) # 开发服务器端口(也可由根目录 FRONTEND_PORT 通过 start.sh 传入)
# PORT=5173 # PORT=15173
# 后端 API 代理目标(见 vite.config.ts # 后端 API 代理目标(见 vite.config.ts
VITE_API_PROXY_TARGET=http://localhost:8080 VITE_API_PROXY_TARGET=http://localhost:18080
+2 -2
View File
@@ -15,8 +15,8 @@ const { Paragraph, Text } = Typography
const baseUrl = const baseUrl =
typeof window !== 'undefined' typeof window !== 'undefined'
? window.location.origin.replace(':5173', ':8080') ? window.location.origin.replace(':15173', ':18080')
: 'http://localhost:8080' : 'http://localhost:18080'
const deliveryModes = [ const deliveryModes = [
{ {
+2 -2
View File
@@ -4,8 +4,8 @@ import react from '@vitejs/plugin-react'
export default defineConfig(({ mode }) => { export default defineConfig(({ mode }) => {
// 读取 frontend/.env* 与进程环境(start.sh 会注入根目录 .env // 读取 frontend/.env* 与进程环境(start.sh 会注入根目录 .env
const env = loadEnv(mode, process.cwd(), '') const env = loadEnv(mode, process.cwd(), '')
const apiTarget = env.VITE_API_PROXY_TARGET || 'http://localhost:8080' const apiTarget = env.VITE_API_PROXY_TARGET || 'http://localhost:18080'
const port = Number(env.PORT || env.FRONTEND_PORT || 5173) const port = Number(env.PORT || env.FRONTEND_PORT || 15173)
return { return {
plugins: [react()], plugins: [react()],
+7 -3
View File
@@ -18,18 +18,22 @@ elif [[ -f "$ROOT/.env.example" ]]; then
log "未找到 .env,可执行: cp .env.example .env" log "未找到 .env,可执行: cp .env.example .env"
fi fi
BACKEND_PORT="${PORT:-8080}" BACKEND_PORT="${PORT:-18080}"
FRONTEND_PORT="${FRONTEND_PORT:-5173}" FRONTEND_PORT="${FRONTEND_PORT:-15173}"
POSTGRES_USER="${POSTGRES_USER:-affiliate}" POSTGRES_USER="${POSTGRES_USER:-affiliate}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-affiliate_dev_password}" POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-affiliate_dev_password}"
POSTGRES_DB="${POSTGRES_DB:-affiliate_dash}" POSTGRES_DB="${POSTGRES_DB:-affiliate_dash}"
POSTGRES_PORT="${POSTGRES_PORT:-5432}" POSTGRES_PORT="${POSTGRES_PORT:-15432}"
POSTGRES_IMAGE="${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}" POSTGRES_IMAGE="${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}"
COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-affiliate_dash}" COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-affiliate_dash}"
POSTGRES_DATA_VOLUME="${POSTGRES_DATA_VOLUME:-affiliate_dash_postgres_data}" POSTGRES_DATA_VOLUME="${POSTGRES_DATA_VOLUME:-affiliate_dash_postgres_data}"
LEGACY_DEV_DB_CONTAINER="${DEV_DB_CONTAINER:-affiliate_dash_postgres_dev}" LEGACY_DEV_DB_CONTAINER="${DEV_DB_CONTAINER:-affiliate_dash_postgres_dev}"
TZ="${TZ:-Asia/Shanghai}" TZ="${TZ:-Asia/Shanghai}"
DATABASE_URL="${DATABASE_URL:-postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable&TimeZone=${TZ}}" DATABASE_URL="${DATABASE_URL:-postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable&TimeZone=${TZ}}"
# 兼容旧 .env:本地 DATABASE_URL 端口与 POSTGRES_PORT 不一致时提醒
if [[ "${DATABASE_URL}" == *"127.0.0.1:"* ]] && [[ "${DATABASE_URL}" != *"127.0.0.1:${POSTGRES_PORT}/"* ]]; then
log "警告: .env 中 DATABASE_URL 的本地端口与 POSTGRES_PORT(${POSTGRES_PORT}) 不一致,请更新 .env"
fi
export DATABASE_URL export DATABASE_URL
export TZ export TZ
export COMPOSE_PROJECT_NAME export COMPOSE_PROJECT_NAME