diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh new file mode 100755 index 0000000..d2f4b81 --- /dev/null +++ b/backend/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +# Ensure logs directory exists with correct permissions +if [ ! -d "/app/logs" ]; then + mkdir -p /app/logs +fi + +# Start the application +exec node src/app.js \ No newline at end of file diff --git a/backend/src/utils/logger.js b/backend/src/utils/logger.js index a8984ef..cba7988 100644 --- a/backend/src/utils/logger.js +++ b/backend/src/utils/logger.js @@ -3,7 +3,7 @@ const DailyRotateFile = require('winston-daily-rotate-file'); const path = require('path'); const config = require('../config'); -const logDir = path.join(__dirname, '../../../logs'); +const logDir = process.env.LOG_DIR || path.join(__dirname, '../../logs'); // Define log format const logFormat = winston.format.combine( diff --git a/docker/Dockerfile.backend b/docker/Dockerfile.backend index cf2076d..0c1337b 100644 --- a/docker/Dockerfile.backend +++ b/docker/Dockerfile.backend @@ -17,15 +17,18 @@ RUN npm ci --only=production # Copy application files COPY . . -# Create logs directory -RUN mkdir -p logs - # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 -# Change ownership -RUN chown -R nodejs:nodejs /app +# Create logs directory with proper permissions +RUN mkdir -p logs && \ + chown -R nodejs:nodejs /app && \ + chmod 755 logs + +# Copy and set permissions for entrypoint +COPY docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh # Switch to non-root user USER nodejs @@ -34,4 +37,4 @@ USER nodejs EXPOSE 3000 # Start the application -CMD ["node", "src/app.js"] \ No newline at end of file +ENTRYPOINT ["docker-entrypoint.sh"] \ No newline at end of file diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 0000000..5dd169c --- /dev/null +++ b/logs/.gitkeep @@ -0,0 +1,2 @@ +# This file ensures the logs directory is tracked in git +# Actual log files are ignored by .gitignore \ No newline at end of file