Files
sleep-guard/packages/proxy/Dockerfile
Vadim Sobinin 420d75a3b7 feat(proxy): add service CRUD with persistent storage
ServiceManager with JSON file persistence replaces static env var config.
CRUD API endpoints (POST/PUT/DELETE /api/services) with WebSocket broadcast.
Dashboard: add/edit/delete services via modal form.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-10 16:05:44 +03:00

52 lines
1.5 KiB
Docker

FROM node:22-alpine AS base
RUN corepack enable
# --- Dependencies ---
FROM base AS deps
WORKDIR /app
COPY package.json yarn.lock .yarnrc.yml tsconfig.base.json ./
COPY packages/shared/package.json packages/shared/
COPY packages/agent/package.json packages/agent/
COPY packages/proxy/package.json packages/proxy/
COPY packages/proxy/web/package.json packages/proxy/web/
RUN yarn install --immutable
# --- Build shared ---
FROM deps AS build-shared
WORKDIR /app
COPY packages/shared packages/shared
RUN yarn workspace @sleepguard/shared build
# --- Build web ---
FROM build-shared AS build-web
WORKDIR /app
COPY packages/proxy/web packages/proxy/web
RUN yarn workspace @sleepguard/web build
# --- Build proxy ---
FROM build-shared AS build-proxy
WORKDIR /app
COPY packages/proxy/tsconfig.json packages/proxy/
COPY packages/proxy/src packages/proxy/src
RUN yarn workspace @sleepguard/proxy build
# --- Production ---
FROM base AS production
WORKDIR /app
COPY package.json yarn.lock .yarnrc.yml ./
COPY packages/shared/package.json packages/shared/
COPY packages/agent/package.json packages/agent/
COPY packages/proxy/package.json packages/proxy/
COPY packages/proxy/web/package.json packages/proxy/web/
RUN yarn workspaces focus @sleepguard/proxy --production
COPY --from=build-shared /app/packages/shared/dist packages/shared/dist
COPY --from=build-proxy /app/packages/proxy/dist packages/proxy/dist
COPY --from=build-web /app/packages/proxy/web/build packages/proxy/public/dashboard
WORKDIR /app/packages/proxy
RUN mkdir -p /app/data
EXPOSE 47391
CMD ["node", "dist/index.js"]