Compare commits
2 Commits
cb4c4eece9
...
ce2d8a2907
| Author | SHA1 | Date | |
|---|---|---|---|
| ce2d8a2907 | |||
| 541161774e |
+1
-1
@@ -21,7 +21,7 @@ COPY packages/ ./packages/
|
|||||||
COPY apps/admin-web/ ./apps/admin-web/
|
COPY apps/admin-web/ ./apps/admin-web/
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
ARG VITE_API_BASE_URL=/api
|
ARG VITE_API_BASE_URL=
|
||||||
RUN pnpm --filter admin-web build
|
RUN pnpm --filter admin-web build
|
||||||
|
|
||||||
# ─── Stage 2: Serve with nginx ─────────────────────────────────────────────────
|
# ─── Stage 2: Serve with nginx ─────────────────────────────────────────────────
|
||||||
|
|||||||
@@ -130,13 +130,22 @@ import {
|
|||||||
markImageUploadRequestStarted,
|
markImageUploadRequestStarted,
|
||||||
} from "./image-webp";
|
} from "./image-webp";
|
||||||
|
|
||||||
const baseURL = import.meta.env.VITE_API_BASE_URL ?? "";
|
const rawBaseURL = import.meta.env.VITE_API_BASE_URL ?? "";
|
||||||
|
const baseURL = normalizeApiBaseURL(rawBaseURL);
|
||||||
const generationStreamEnabled = import.meta.env.VITE_GENERATION_STREAM_ENABLED === "true";
|
const generationStreamEnabled = import.meta.env.VITE_GENERATION_STREAM_ENABLED === "true";
|
||||||
const accessRefreshSkewMs = 2 * 60 * 1000;
|
const accessRefreshSkewMs = 2 * 60 * 1000;
|
||||||
|
|
||||||
const publicClient = createApiClient({ baseURL });
|
const publicClient = createApiClient({ baseURL });
|
||||||
let storedRefreshPromise: Promise<AuthTokens> | null = null;
|
let storedRefreshPromise: Promise<AuthTokens> | null = null;
|
||||||
|
|
||||||
|
function normalizeApiBaseURL(value: string): string {
|
||||||
|
const trimmed = value.trim().replace(/\/+$/, "");
|
||||||
|
if (!trimmed) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return trimmed.replace(/\/api$/i, "");
|
||||||
|
}
|
||||||
|
|
||||||
export function getApiBaseURL(): string {
|
export function getApiBaseURL(): string {
|
||||||
if (baseURL) {
|
if (baseURL) {
|
||||||
return baseURL;
|
return baseURL;
|
||||||
|
|||||||
+6
-7
@@ -10,21 +10,20 @@ IMAGE_TAG=latest
|
|||||||
# ─── Required: API Keys ────────────────────────────────────────────────────────
|
# ─── Required: API Keys ────────────────────────────────────────────────────────
|
||||||
# LLM provider API key (Ark / Doubao / OpenAI-compatible)
|
# LLM provider API key (Ark / Doubao / OpenAI-compatible)
|
||||||
LLM_API_KEY=your-llm-api-key-here
|
LLM_API_KEY=your-llm-api-key-here
|
||||||
|
|
||||||
# Embedding + reranker API key (SiliconFlow)
|
# Embedding + reranker API key (SiliconFlow)
|
||||||
SILICONFLOW_API_KEY=your-siliconflow-api-key-here
|
SILICONFLOW_API_KEY=your-siliconflow-api-key-here
|
||||||
|
|
||||||
# ─── Required: Security ───────────────────────────────────────────────────────
|
# ─── Required: Security ───────────────────────────────────────────────────────
|
||||||
# JWT signing secret — use a strong random string in production
|
# JWT signing secret — use a strong random string in production
|
||||||
# Generate: openssl rand -hex 32
|
# Generate: openssl rand -hex 32
|
||||||
JWT_SECRET=change-me-in-production
|
JWT_SECRET=geo-web-Aa123456-change-me-in-production
|
||||||
OPS_JWT_SECRET=change-me-in-production
|
OPS_JWT_SECRET=geo-ops-Aa123456-change-me-in-production
|
||||||
OPS_DEFAULT_ADMIN_PASSWORD=change-me-before-first-start
|
OPS_DEFAULT_ADMIN_PASSWORD=Aa123456
|
||||||
SCHEDULER_INTERNAL_METRICS_TOKEN=change-me-scheduler-metrics-token
|
SCHEDULER_INTERNAL_METRICS_TOKEN=geo-scheduler-Aa123456-change-me-in-production
|
||||||
|
|
||||||
# ─── Optional: MinIO credentials ─────────────────────────────────────────────
|
# ─── Optional: MinIO credentials ─────────────────────────────────────────────
|
||||||
MINIO_ROOT_USER=minioadmin
|
MINIO_ROOT_USER=admin
|
||||||
MINIO_ROOT_PASSWORD=minioadmin
|
MINIO_ROOT_PASSWORD=Aa123456
|
||||||
|
|
||||||
# ─── Optional: Exposed ports ─────────────────────────────────────────────────
|
# ─── Optional: Exposed ports ─────────────────────────────────────────────────
|
||||||
# Defaults avoid common NAS ports such as 80, 8080, and 8090.
|
# Defaults avoid common NAS ports such as 80, 8080, and 8090.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ monitoring_database:
|
|||||||
max_idle_conns: 2
|
max_idle_conns: 2
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
addr: localhost:6379
|
addr: redis:6379
|
||||||
db: 0
|
db: 0
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
|
|||||||
Reference in New Issue
Block a user