From fe324936c88d8c88b6836b343e44a82865ca700e Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 5 Aug 2026 22:04:27 +0330 Subject: [PATCH] Fix Prisma runtime by switching API image to Debian slim Alpine musl is incompatible with host-built Prisma engines; use bookworm-slim and allow updating entrypoint without repacking the bundle. Co-authored-by: Cursor --- .dockerignore | 2 +- Dockerfile | 15 +++++++++++---- docker-entrypoint.sh | 3 ++- prisma/schema.prisma | 3 ++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.dockerignore b/.dockerignore index 24df639..0221fab 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,6 @@ -# فقط باندل و فایل‌های لازم برای بیلد ایمیج * !deploy-bundle.tar.gz !Dockerfile !docker-compose.yml +!docker-entrypoint.sh !.env.example diff --git a/Dockerfile b/Dockerfile index 29fa016..1975cd1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,20 @@ -# باندل از گیت می‌آید؛ داخل ایمیج باز می‌شود — روی سرور tar لازم نیست -FROM node:22-alpine +# باندل روی glibc ساخته شده؛ Alpine (musl) با Prisma سازگار نیست +FROM node:22-bookworm-slim WORKDIR /app ENV NODE_ENV=production +RUN apt-get update \ + && apt-get install -y --no-install-recommends openssl ca-certificates \ + && rm -rf /var/lib/apt/lists/* + COPY deploy-bundle.tar.gz /tmp/deploy-bundle.tar.gz RUN tar -xzf /tmp/deploy-bundle.tar.gz -C /app \ - && rm /tmp/deploy-bundle.tar.gz \ - && chmod +x /app/docker-entrypoint.sh + && rm /tmp/deploy-bundle.tar.gz + +# entrypoint از ریپو (قابل آپدیت بدون بازسازی کل باندل) +COPY docker-entrypoint.sh /app/docker-entrypoint.sh +RUN chmod +x /app/docker-entrypoint.sh EXPOSE 3000 ENTRYPOINT ["./docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0d01696..8dd49d4 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,7 @@ #!/bin/sh set -e +echo "DATABASE_URL host check..." echo "Waiting for database & applying migrations..." i=0 until npx prisma migrate deploy; do @@ -18,5 +19,5 @@ if [ "${RUN_SEED:-false}" = "true" ]; then npx prisma db seed || true fi -echo "Starting API..." +echo "Starting API on port ${PORT:-3000}..." exec node dist/main.js diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c23dec2..743ab8a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,5 +1,6 @@ generator client { - provider = "prisma-client-js" + provider = "prisma-client-js" + binaryTargets = ["native", "debian-openssl-3.0.x", "linux-musl-openssl-3.0.x"] } datasource db {