From 0087d0fddc480c5f17da382a7b6f289aef687f30 Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 23 Jul 2025 14:01:48 +0200 Subject: [PATCH] fix: Resolve backend logger permission errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix logger path to use relative path from backend directory - Add LOG_DIR environment variable support for custom log paths - Create logs directory with .gitkeep to ensure it exists - Add docker-entrypoint.sh to handle runtime permissions - Optimize Dockerfile to set proper permissions for nodejs user - Ensure logs directory is writable by the application 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- backend/docker-entrypoint.sh | 10 ++++++++++ backend/src/utils/logger.js | 2 +- docker/Dockerfile.backend | 15 +++++++++------ logs/.gitkeep | 2 ++ 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100755 backend/docker-entrypoint.sh create mode 100644 logs/.gitkeep 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