diff --git a/docker/Dockerfile b/docker/Dockerfile index 66f2f9f5..39a472a2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -15,7 +15,7 @@ COPY src/backend/ ./src/backend/ # Stage 3: Final production image FROM node:18-alpine -RUN apk add --no-cache nginx +RUN apk add --no-cache nginx mongodb~=5 # Configure nginx COPY docker/nginx.conf /etc/nginx/nginx.conf @@ -25,13 +25,23 @@ COPY --from=frontend-builder /app/dist /usr/share/nginx/html COPY --from=backend-builder /app/node_modules ./node_modules COPY --from=backend-builder /app/src/backend ./src/backend -# Create separate directories for nginx and node -RUN mkdir -p /var/log/nginx && \ +# Create persistent directories for MongoDB and nginx +RUN mkdir -p /usr/local/mongodb/data/db && \ + mkdir -p /var/log/nginx && \ mkdir -p /var/lib/nginx && \ - chown -R nginx:nginx /var/log/nginx /var/lib/nginx + mkdir -p /var/log/mongodb && \ + chown -R nginx:nginx /var/log/nginx /var/lib/nginx && \ + chown -R mongodb:mongodb /usr/local/mongodb/data/db /var/log/mongodb + +# Set environment variables +ENV MONGO_URL=mongodb://localhost:27017/termix \ + MONGODB_DATA_DIR=/usr/local/mongodb/data/db \ + MONGODB_LOG_DIR=/var/log/mongodb + +VOLUME ["/usr/local/mongodb/data/db"] # Expose ports -EXPOSE 8080 8081 8082 +EXPOSE 8080 8081 8082 27017 # Use a entrypoint script to run all services COPY docker/entrypoint.sh /entrypoint.sh diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 00959e3b..311d03ed 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,11 +1,16 @@ #!/bin/sh -# Start NGINX in background -nginx -g "daemon off;" & +# Start MongoDB with custom data directory +mongod --fork --dbpath $MONGODB_DATA_DIR --logpath $MONGODB_LOG_DIR/mongodb.log -# Start Node.js backend +# Start nginx +nginx + +# Start the SSH service node src/backend/ssh.cjs & + +# Start the database service node src/backend/database.cjs & -# Keep container running -wait \ No newline at end of file +# Keep the container running +tail -f /dev/null \ No newline at end of file diff --git a/src/backend/database.cjs b/src/backend/database.cjs index 7561163f..1e453db3 100644 --- a/src/backend/database.cjs +++ b/src/backend/database.cjs @@ -69,7 +69,7 @@ const decryptData = (encryptedData, userId, sessionToken) => { } }; -mongoose.connect(process.env.MONGO_URL || 'mongodb://mongodb:27017/termix') +mongoose.connect(process.env.MONGO_URL || 'mongodb://localhost:27017/termix') .then(() => logger.info('Connected to MongoDB')) .catch(err => logger.error('MongoDB connection error:', err));