/
nasya
/
SafeDrop
Обзор
Документация
Войти
/
nasya
/
SafeDrop
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
infra/docker/node-service.Dockerfile
144 строки
8 KB
nasya
Initial commit
24 май 2026, 16:12
24 май 2026, 16:12
16bc032
Код
Авторство
О чём код?
FROM oven/bun:1.3.11-alpine AS bun FROM node:24-alpine AS manifests COPY --from=bun /usr/local/bin/bun /usr/local/bin/bun COPY --from=bun /usr/local/bin/bunx /usr/local/bin/bunx WORKDIR /repo COPY package.json bun.lock bunfig.toml biome.json rstest.config.ts tsconfig.json tsconfig.base.json tsconfig.node.json tsconfig.web.json ./ COPY packages/db/package.json ./packages/db/package.json COPY packages/db/prisma.config.ts ./packages/db/prisma.config.ts COPY packages/db/prisma ./packages/db/prisma COPY packages/shared/package.json ./packages/shared/package.json COPY apps/api-gateway/package.json ./apps/api-gateway/package.json COPY apps/file-service/package.json ./apps/file-service/package.json COPY apps/key-service/package.json ./apps/key-service/package.json COPY apps/share-service/package.json ./apps/share-service/package.json COPY apps/auth-ui/package.json ./apps/auth-ui/package.json COPY apps/telegram-oidc-bridge/package.json ./apps/telegram-oidc-bridge/package.json COPY apps/web/package.json ./apps/web/package.json FROM manifests AS builder RUN bun install --frozen-lockfile --ignore-scripts --linker hoisted COPY scripts ./scripts COPY packages ./packages COPY apps ./apps RUN bun run --cwd packages/db db:generate RUN bun run --cwd packages/db build RUN bun run --cwd packages/shared build RUN bun run --cwd apps/api-gateway build RUN bun run --cwd apps/file-service build RUN bun run --cwd apps/key-service build RUN bun run --cwd apps/share-service build RUN bun run --cwd apps/auth-ui build RUN bun run --cwd apps/telegram-oidc-bridge build FROM manifests AS api-gateway-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/api-gateway FROM manifests AS file-service-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/file-service FROM manifests AS key-service-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/key-service FROM manifests AS share-service-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/share-service FROM manifests AS auth-ui-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/auth-ui FROM manifests AS telegram-oidc-bridge-deps RUN bun install --production --frozen-lockfile --ignore-scripts --linker hoisted --filter @safedrop/telegram-oidc-bridge FROM node:24-alpine AS node-runtime WORKDIR /repo ENV NODE_ENV=production FROM node-runtime AS api-gateway COPY --chown=node:node --from=api-gateway-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/api-gateway/package.json ./apps/api-gateway/package.json COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/api-gateway/dist ./apps/api-gateway/dist USER node CMD ["node", "apps/api-gateway/dist/server.js"] FROM node-runtime AS file-service COPY --chown=node:node --from=file-service-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/db/package.json ./packages/db/package.json COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/file-service/package.json ./apps/file-service/package.json COPY --chown=node:node --from=builder /repo/node_modules/@prisma/client ./node_modules/@prisma/client COPY --chown=node:node --from=builder /repo/node_modules/.prisma/client ./node_modules/.prisma/client COPY --chown=node:node --from=builder /repo/packages/db/dist ./packages/db/dist COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/file-service/dist ./apps/file-service/dist USER node CMD ["node", "apps/file-service/dist/server.js"] FROM node-runtime AS key-service COPY --chown=node:node --from=key-service-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/db/package.json ./packages/db/package.json COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/key-service/package.json ./apps/key-service/package.json COPY --chown=node:node --from=builder /repo/node_modules/@prisma/client ./node_modules/@prisma/client COPY --chown=node:node --from=builder /repo/node_modules/.prisma/client ./node_modules/.prisma/client COPY --chown=node:node --from=builder /repo/packages/db/dist ./packages/db/dist COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/key-service/dist ./apps/key-service/dist USER node CMD ["node", "apps/key-service/dist/server.js"] FROM node-runtime AS share-service COPY --chown=node:node --from=share-service-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/db/package.json ./packages/db/package.json COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/share-service/package.json ./apps/share-service/package.json COPY --chown=node:node --from=builder /repo/node_modules/@prisma/client ./node_modules/@prisma/client COPY --chown=node:node --from=builder /repo/node_modules/.prisma/client ./node_modules/.prisma/client COPY --chown=node:node --from=builder /repo/packages/db/dist ./packages/db/dist COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/share-service/dist ./apps/share-service/dist USER node CMD ["node", "apps/share-service/dist/server.js"] FROM node-runtime AS auth-ui COPY --chown=node:node --from=auth-ui-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/db/package.json ./packages/db/package.json COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/auth-ui/package.json ./apps/auth-ui/package.json COPY --chown=node:node --from=builder /repo/node_modules/@prisma/client ./node_modules/@prisma/client COPY --chown=node:node --from=builder /repo/node_modules/.prisma/client ./node_modules/.prisma/client COPY --chown=node:node --from=builder /repo/packages/db/dist ./packages/db/dist COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/auth-ui/dist ./apps/auth-ui/dist USER node CMD ["node", "apps/auth-ui/dist/server.js"] FROM node-runtime AS telegram-oidc-bridge COPY --chown=node:node --from=telegram-oidc-bridge-deps /repo/node_modules ./node_modules COPY --chown=node:node packages/shared/package.json ./packages/shared/package.json COPY --chown=node:node apps/telegram-oidc-bridge/package.json ./apps/telegram-oidc-bridge/package.json COPY --chown=node:node --from=builder /repo/packages/shared/dist ./packages/shared/dist COPY --chown=node:node --from=builder /repo/apps/telegram-oidc-bridge/dist ./apps/telegram-oidc-bridge/dist USER node CMD ["node", "apps/telegram-oidc-bridge/dist/server.js"] FROM oven/bun:1.3.11-alpine AS bun-runtime WORKDIR /repo ENV NODE_ENV=production FROM bun-runtime AS hydra-client-init COPY --chown=bun:bun scripts/init-hydra-client.ts ./scripts/init-hydra-client.ts USER bun CMD ["bun", "scripts/init-hydra-client.ts"] FROM bun-runtime AS migrate COPY --chown=bun:bun --from=builder /repo/node_modules ./node_modules COPY --chown=bun:bun package.json bun.lock bunfig.toml ./ COPY --chown=bun:bun packages/db/package.json ./packages/db/package.json COPY --chown=bun:bun packages/db/prisma ./packages/db/prisma COPY --chown=bun:bun packages/db/prisma.config.ts ./packages/db/prisma.config.ts USER bun CMD ["bun", "run", "--cwd", "packages/db", "db:migrate:deploy"]