From 5bea2ad1337506610ca744cc410670912b2acff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Gierwia=C5=82o?= Date: Fri, 14 Nov 2025 13:35:10 +0100 Subject: [PATCH] build: add Docker entrypoint scripts for automated setup - Add backend entrypoint with automated Prisma migrations and client regeneration - Add frontend entrypoint with dependency management - Update Dockerfiles to use entrypoint scripts - Ensures database schema stays in sync with Prisma Client after migrations --- backend/Dockerfile | 9 ++++++++- backend/docker-entrypoint.sh | 33 +++++++++++++++++++++++++++++++++ frontend/Dockerfile | 9 ++++++++- frontend/docker-entrypoint.sh | 17 +++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 backend/docker-entrypoint.sh create mode 100644 frontend/docker-entrypoint.sh diff --git a/backend/Dockerfile b/backend/Dockerfile index 2cc6ad5..94278e5 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -15,8 +15,15 @@ RUN npm install # Copy application files COPY . . +# Copy and set permissions for entrypoint script +COPY docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + # Expose port EXPOSE 3000 -# Start application +# Set entrypoint +ENTRYPOINT ["docker-entrypoint.sh"] + +# Default command (can be overridden) CMD ["npm", "run", "dev"] diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh new file mode 100644 index 0000000..559a30d --- /dev/null +++ b/backend/docker-entrypoint.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -e + +echo "🔧 Checking dependencies..." + +# Install dependencies if node_modules doesn't exist or package.json changed +if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then + echo "📦 Installing npm dependencies..." + npm install +else + echo "✅ Dependencies already installed" +fi + +# Generate Prisma Client if not exists or schema changed +if [ ! -d "node_modules/.prisma/client" ] || [ "prisma/schema.prisma" -nt "node_modules/.prisma/client" ]; then + echo "🔨 Generating Prisma Client..." + npx prisma generate +else + echo "✅ Prisma Client already generated" +fi + +# Run pending database migrations +echo "🔄 Applying database migrations..." +npx prisma migrate deploy + +# Regenerate Prisma Client after migrations to ensure sync +echo "🔨 Regenerating Prisma Client after migrations..." +npx prisma generate + +echo "✅ Ready to start!" + +# Execute the main command (passed as arguments to this script) +exec "$@" diff --git a/frontend/Dockerfile b/frontend/Dockerfile index ee8e0fb..ab733f1 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -11,8 +11,15 @@ RUN npm install # Copy project files COPY . . +# Copy and set permissions for entrypoint script +COPY docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + # Expose Vite dev server port EXPOSE 5173 -# Start dev server +# Set entrypoint +ENTRYPOINT ["docker-entrypoint.sh"] + +# Default command (can be overridden) CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] diff --git a/frontend/docker-entrypoint.sh b/frontend/docker-entrypoint.sh new file mode 100644 index 0000000..fe294c6 --- /dev/null +++ b/frontend/docker-entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/sh +set -e + +echo "🔧 Checking dependencies..." + +# Install dependencies if node_modules doesn't exist or package.json changed +if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then + echo "📦 Installing npm dependencies..." + npm install +else + echo "✅ Dependencies already installed" +fi + +echo "✅ Ready to start!" + +# Execute the main command (passed as arguments to this script) +exec "$@"