- lps-admin 컨테이너화: Vite 정적 빌드 → nginx, /v1·/healthz·/readyz 를 lps-api:9600 으로 동일출처 프록시(빌드 타임 API URL 주입 불필요) - lps-api/worker: APP_ENV=local 고정 + DB_HOST override(도메인 backend·negodata·agent 와 동일 패턴), config.<env>.toml 마운트 방식 폐기 - server_configs 에 DB 접속 env override(_apply_db_env_override) 복원 - config.dev/prod.toml.example 제거 — 환경 구분 없이 config.local.toml 하나 (prod 서버도 그 서버의 config.local.toml + docker compose up -d) - run_docker.sh 환경 선택 제거·lps-admin 포함, README·operations 문서 갱신 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.0 KiB
Docker
27 lines
1.0 KiB
Docker
# LPS 관리자 UI 이미지 — Vite(React) 정적 빌드 → nginx 서빙.
|
|
# nginx 가 /v1·/healthz·/readyz 를 lps-api:9600 으로 프록시(동일출처)하므로,
|
|
# 앱은 상대경로로 API 를 호출한다(client.ts baseUrl 빈값) → 빌드 타임 API URL 주입 불필요.
|
|
# 빌드는 slim(glibc) — alpine(musl)+esbuild 의 ETXTBSY 회피(negodata/front 선례).
|
|
FROM node:22-slim AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# 의존성 먼저 (레이어 캐시). package-lock 고정 설치.
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
|
|
COPY . .
|
|
RUN npm run build # tsc -b && vite build → dist/
|
|
|
|
# ── 런타임: 정적 서빙 + API 프록시 ──
|
|
FROM nginx:1.27-alpine
|
|
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
COPY --from=build /app/dist /usr/share/nginx/html
|
|
|
|
EXPOSE 80
|
|
|
|
# UI 자체 도달성만 확인(index.html) — API 상태는 앱 대시보드가 lps-api 를 직접 폴링한다.
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
CMD wget -qO- http://127.0.0.1/ >/dev/null 2>&1 || exit 1
|