k-skill/packages/k-skill-proxy/Dockerfile
Jeffrey (Dongkyu) Kim 80e7805681 ci(k-skill-proxy): replace local pm2+cloudflared with Cloud Run auto-deploy via GitHub Actions
main에 머지되면 GitHub Actions가 자동으로 Workload Identity Federation으로 GCP 인증 후
Artifact Registry에 컨테이너 이미지를 빌드/푸시하고 Cloud Run(asia-northeast1) 서비스
k-skill-proxy를 재배포한다. 시크릿은 GCP Secret Manager에서 런타임에 주입된다.

- add .github/workflows/deploy-k-skill-proxy.yml (WIF, on push to main)
- add packages/k-skill-proxy/Dockerfile (multi-stage node:20-alpine, port bridge)
- add docs/deploy-k-skill-proxy.md (1회성 GCP 셋업 + 운영 점검 절차)
- remove ecosystem.config.cjs (PM2 root config)
- remove scripts/run-k-skill-proxy.sh (local secrets.env source + node launcher)
- remove wrangler devDependency (unused Cloudflare Workers CLI)
- update AGENTS.md, CLAUDE.md, CONTRIBUTING.md, docs/features/k-skill-proxy.md,
  packages/k-skill-proxy/README.md to describe the new Cloud Run + GHA flow
- clean dead k-skill-proxy-cloudrun entries from .gitignore
2026-05-21 13:45:06 +09:00

26 lines
1.1 KiB
Docker

# Build context MUST be repo root.
# packages/k-skill-proxy/src/parking-lots.js does:
# require("../../parking-lot-search/src/parse")
# so this image keeps both packages under /workspace/packages/ to preserve
# that relative require path. Do not flatten the layout.
FROM node:20-alpine AS deps
WORKDIR /app
COPY packages/k-skill-proxy/package.json ./package.json
RUN npm install --omit=dev --no-audit --no-fund \
&& npm cache clean --force
FROM node:20-alpine AS runtime
WORKDIR /workspace
ENV NODE_ENV=production \
KSKILL_PROXY_HOST=0.0.0.0 \
KSKILL_PROXY_PORT=8080
COPY --from=deps /app/node_modules ./packages/k-skill-proxy/node_modules
COPY --from=deps /app/package.json ./packages/k-skill-proxy/package.json
COPY packages/k-skill-proxy/src ./packages/k-skill-proxy/src
COPY packages/parking-lot-search/src ./packages/parking-lot-search/src
COPY packages/parking-lot-search/package.json ./packages/parking-lot-search/package.json
WORKDIR /workspace/packages/k-skill-proxy
EXPOSE 8080
USER node
# Cloud Run injects PORT; the server reads KSKILL_PROXY_PORT. Forward it.
CMD ["sh", "-c", "KSKILL_PROXY_PORT=${PORT:-8080} node src/server.js"]