From c6d02f3cfab0077d5bff8bc50d52b964f1726b01 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Tue, 11 Nov 2025 09:39:25 +0200 Subject: [PATCH 1/2] Automate migrations --- docker/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index 82f737e..91b97eb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,4 +19,7 @@ ENV PRISMA_LOG_LEVEL=info RUN mkdir -p /challenge-api/reports +RUN echo "Running database migrations..." +RUN npx prisma migrate deploy + CMD ["node","/challenge-api/app.js"] From 6c0e4d8e07b2cf89d70ecdfdfd3ca238f31658c2 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Tue, 11 Nov 2025 09:46:39 +0200 Subject: [PATCH 2/2] use entrypoint --- docker/Dockerfile | 9 ++++++--- docker/entrypoint.sh | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 docker/entrypoint.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 91b97eb..35e991c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,7 +19,10 @@ ENV PRISMA_LOG_LEVEL=info RUN mkdir -p /challenge-api/reports -RUN echo "Running database migrations..." -RUN npx prisma migrate deploy +# Copy entrypoint script and make it executable +COPY docker/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh -CMD ["node","/challenge-api/app.js"] +# Use entrypoint to run migrations at startup (not build time) +# Prisma uses PostgreSQL advisory locks to prevent concurrent migrations +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..75890e6 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +echo "Starting Challenge API v6..." + +# Run database migrations +# Prisma uses PostgreSQL advisory locks to prevent concurrent migrations +# Only one instance will run migrations, others will wait +echo "Running database migrations..." +npx prisma migrate deploy + +# Check migration status +if [ $? -eq 0 ]; then + echo "Migrations completed successfully" +else + echo "Migration failed with exit code $?" + exit 1 +fi + +# Start the application +echo "Starting application server..." +exec node /challenge-api/app.js