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 "$@"