From 60645d5773e215373ee8e95ffc37caab7b57e0a1 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Fri, 23 Oct 2026 17:45:36 +0700 Subject: [PATCH] =?UTF-8?q?fix(docker):=20=D0=BA=D0=BE=D0=BF=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B2=D0=B5=D1=81=D1=8C=20dis?= =?UTF-8?q?t=20API=20=D0=B8=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20splitting=20=D0=B2=20tsup=20(ERR=5FMODULE=5FNOT?= =?UTF-8?q?=5FFOUND=20=D0=BD=D0=B0=20chunk)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/test/deploy-config.test.ts | 5 +++++ apps/api/tsup.config.ts | 2 ++ deploy/docker/authportal/Dockerfile | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/api/test/deploy-config.test.ts b/apps/api/test/deploy-config.test.ts index 5c5f52f..e76406c 100644 --- a/apps/api/test/deploy-config.test.ts +++ b/apps/api/test/deploy-config.test.ts @@ -48,6 +48,11 @@ describe('Dockerfile', () => { expect(read('deploy/docker/docker-bake.hcl')).toMatch(/node:22-alpine@sha256:[0-9a-f]{64}/) }) + it('в образ копируется весь dist API, а tsup не дробит бандл на чанки', () => { + expect(dockerfile).toContain('cp -r apps/api/dist /out/dist') + expect(read('apps/api/tsup.config.ts')).toMatch(/splitting:\s*false/) + }) + it('нативные модули проверяются при сборке', () => { expect(dockerfile).toContain('native modules ok') }) diff --git a/apps/api/tsup.config.ts b/apps/api/tsup.config.ts index b896c6f..5409bd1 100644 --- a/apps/api/tsup.config.ts +++ b/apps/api/tsup.config.ts @@ -21,5 +21,7 @@ export default defineConfig({ 'const __dirname = __dn(__filename);', ].join('\n'), }, + // Один файл: динамические import() (напр. CLI backup) не должны порождать чанки. + splitting: false, clean: true, }) diff --git a/deploy/docker/authportal/Dockerfile b/deploy/docker/authportal/Dockerfile index 8b99d86..37b2e27 100644 --- a/deploy/docker/authportal/Dockerfile +++ b/deploy/docker/authportal/Dockerfile @@ -31,8 +31,8 @@ RUN rm -f apps/web/src/routes/design-preview*.tsx RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ pnpm turbo build --filter=web --filter=@authportal/api # Рантайм-слой: бандл + статика (только brotli) + нативные модули с теми же версиями, что в lockfile. -RUN mkdir -p /out/dist \ - && cp apps/api/dist/server.js /out/dist/server.js \ +RUN mkdir -p /out \ + && cp -r apps/api/dist /out/dist \ && cp -r apps/web/dist /out/static \ && find /out/static -type f \( -name '*.js' -o -name '*.css' -o -name '*.html' -o -name '*.svg' -o -name '*.json' \) \ -exec sh -c 'brotli -f -q 11 -o "$1.br" "$1"' _ {} \; \