Files
ObsidianSync/apps/sync-server/Dockerfile
2026-04-08 13:24:25 +01:00

36 lines
1.1 KiB
Docker

FROM node:22-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
COPY tsconfig.json tsconfig.base.json ./
COPY apps ./apps
COPY packages ./packages
RUN npm ci
RUN npm run build --workspace @obsidian-sync/sync-server
RUN npm prune --omit=dev
FROM node:22-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=8787
ENV SYNC_DATA_DIR=/app/data
COPY --from=build /app/package.json ./package.json
COPY --from=build /app/package-lock.json ./package-lock.json
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/apps/sync-server/package.json ./apps/sync-server/package.json
COPY --from=build /app/apps/sync-server/dist ./apps/sync-server/dist
COPY --from=build /app/packages/sync-protocol/package.json ./packages/sync-protocol/package.json
COPY --from=build /app/packages/sync-protocol/dist ./packages/sync-protocol/dist
EXPOSE 8787
VOLUME ["/app/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD node -e "fetch('http://127.0.0.1:8787/health').then((response)=>{if(!response.ok) process.exit(1);}).catch(()=>process.exit(1));"
CMD ["node", "apps/sync-server/dist/index.js"]