- proxy: asyncio TCP proxy with handshake parser, domain whitelist, transparent backend tunneling, SQLite logging, mtime hot reload - api: FastAPI routes for config/domains/logs/status + restart trigger - frontend: React + Vite NPM-style dashboard (dashboard/domains/logs/settings) - nginx: reverse proxy for /api -> api:8000 and / -> frontend:3000 - docker-compose: full stack with shared data volume - replace spec mc-domain-filter.md with README.md
18 lines
480 B
Docker
18 lines
480 B
Docker
# 빌드 단계
|
|
FROM node:20-alpine AS build
|
|
WORKDIR /app
|
|
COPY package.json ./
|
|
RUN npm install --no-audit --no-fund
|
|
COPY . ./
|
|
RUN npm run build
|
|
|
|
# 서빙 단계: vite preview 로 dist/ 정적 서빙
|
|
FROM node:20-alpine
|
|
WORKDIR /app
|
|
COPY --from=build /app/package.json ./
|
|
COPY --from=build /app/node_modules ./node_modules
|
|
COPY --from=build /app/dist ./dist
|
|
COPY --from=build /app/vite.config.js ./
|
|
EXPOSE 3000
|
|
CMD ["npx", "vite", "preview", "--host", "0.0.0.0", "--port", "3000"]
|