From f6218283f116c4b4b7d1b9fc4a4420ef4ae173ba Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 09:02:54 -0300 Subject: [PATCH 1/7] fix: Create home directory for nextjs user to fix npm permissions --- Dockerfile | 7 ++++++- docker-entrypoint.sh | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index b2a8cde..7fb9763 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,7 +40,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openssl \ && rm -rf /var/lib/apt/lists/* \ && groupadd --system --gid 1001 nodejs \ - && useradd --system --uid 1001 nextjs + && useradd --system --uid 1001 nextjs \ + && mkdir -p /home/nextjs && chown nextjs:nextjs /home/nextjs COPY --from=builder /app/public ./public COPY --from=builder /app/.next/standalone ./ @@ -52,6 +53,9 @@ COPY --from=builder /app/prisma/schema.prisma /app/schema.prisma COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh +# Create data directory and initialize database as root +RUN mkdir -p /app/data && chown -R nextjs:nodejs /app + USER nextjs EXPOSE 3000 @@ -59,6 +63,7 @@ EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" ENV DATABASE_URL="file:./data/dev.db" +ENV HOME=/home/nextjs ENTRYPOINT ["docker-entrypoint.sh"] CMD ["node", "server.js"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 32dd391..e36db27 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -4,11 +4,12 @@ set -e # Initialize database if it doesn't exist or schema changed echo "Checking database..." -# Create data directory if it doesn't exist +# Create directories with proper permissions mkdir -p /app/data +mkdir -p /app/.npm # Push schema (safe - won't overwrite data, only syncs schema) -npx prisma db push --skip-generate --skip-pull +npm exec -- prisma db push --skip-generate --skip-pull echo "Starting application..." exec "$@" From 5fb1c5d0b0eea52e887057e24c8beb02869c0c92 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 09:04:26 -0300 Subject: [PATCH 2/7] fix: Copy .bin folder and use local prisma in entrypoint --- Dockerfile | 1 + docker-entrypoint.sh | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7fb9763..ac77ce7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,6 +48,7 @@ COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma +COPY --from=builder /app/node_modules/.bin ./node_modules/.bin COPY --from=builder /app/prisma/schema.prisma /app/schema.prisma COPY docker-entrypoint.sh /usr/local/bin/ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index e36db27..02ad1e1 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,10 +6,9 @@ echo "Checking database..." # Create directories with proper permissions mkdir -p /app/data -mkdir -p /app/.npm -# Push schema (safe - won't overwrite data, only syncs schema) -npm exec -- prisma db push --skip-generate --skip-pull +# Push schema using local prisma binary +./node_modules/.bin/prisma db push --skip-generate echo "Starting application..." exec "$@" From e5b6ce3bdc2e6586b9bf4ed7a0734b834606d29a Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 09:08:24 -0300 Subject: [PATCH 3/7] fix: Use npx with proper HOME and cache directories for prisma --- docker-entrypoint.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 02ad1e1..3cf0e77 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,9 +6,10 @@ echo "Checking database..." # Create directories with proper permissions mkdir -p /app/data +mkdir -p /app/.npm -# Push schema using local prisma binary -./node_modules/.bin/prisma db push --skip-generate +# Use npx with HOME set to /app so it can cache prisma +HOME=/app NPM_CONFIG_CACHE=/app/.npm npx prisma db push --skip-generate echo "Starting application..." exec "$@" From e5e976caff5310051cd8bce2955436f895eb4eb2 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 09:14:59 -0300 Subject: [PATCH 4/7] fix: Remove --skip-generate flag not supported in Prisma 7 --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 3cf0e77..209c237 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -9,7 +9,7 @@ mkdir -p /app/data mkdir -p /app/.npm # Use npx with HOME set to /app so it can cache prisma -HOME=/app NPM_CONFIG_CACHE=/app/.npm npx prisma db push --skip-generate +HOME=/app NPM_CONFIG_CACHE=/app/.npm npx prisma db push echo "Starting application..." exec "$@" From f038f370011272c6c787135bdd4883f26372fe75 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 09:33:31 -0300 Subject: [PATCH 5/7] fix: Use local Prisma 5 from node_modules instead of downloading Prisma 7 --- Dockerfile | 2 +- docker-entrypoint.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac77ce7..569638c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,7 @@ COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma -COPY --from=builder /app/node_modules/.bin ./node_modules/.bin +COPY --from=builder /app/node_modules/prisma ./node_modules/prisma COPY --from=builder /app/prisma/schema.prisma /app/schema.prisma COPY docker-entrypoint.sh /usr/local/bin/ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 209c237..74fa794 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -8,8 +8,8 @@ echo "Checking database..." mkdir -p /app/data mkdir -p /app/.npm -# Use npx with HOME set to /app so it can cache prisma -HOME=/app NPM_CONFIG_CACHE=/app/.npm npx prisma db push +# Use local prisma version from node_modules +HOME=/app NPM_CONFIG_CACHE=/app/.npm ./node_modules/prisma/build/index.js db push echo "Starting application..." exec "$@" From 93b6c0b17dd62f4b9b069661353a8572526595b6 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 10:03:51 -0300 Subject: [PATCH 6/7] fix: Simplify entrypoint - remove npm cache directories --- docker-entrypoint.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 74fa794..90d4525 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,10 +6,9 @@ echo "Checking database..." # Create directories with proper permissions mkdir -p /app/data -mkdir -p /app/.npm # Use local prisma version from node_modules -HOME=/app NPM_CONFIG_CACHE=/app/.npm ./node_modules/prisma/build/index.js db push +./node_modules/prisma/build/index.js db push echo "Starting application..." exec "$@" From 97082b0233e07cf7c3a00403ff8f5de62c0e5871 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 24 Mar 2026 10:21:05 -0300 Subject: [PATCH 7/7] fix: Copy @prisma modules needed for prisma CLI --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 569638c..ab60477 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,6 +49,7 @@ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder /app/node_modules/prisma ./node_modules/prisma +COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma COPY --from=builder /app/prisma/schema.prisma /app/schema.prisma COPY docker-entrypoint.sh /usr/local/bin/