Add health check script and improve Redis debugging

This commit is contained in:
Andreas Dueren
2025-07-15 08:33:54 -06:00
parent 34c2d30c0c
commit 12917e3dd9
4 changed files with 41 additions and 4 deletions

View File

@@ -5,7 +5,7 @@
"description": "Open-source collaborative wiki and documentation platform. A modern alternative to Confluence and Notion with real-time collaboration, diagram support, and multilingual capabilities.", "description": "Open-source collaborative wiki and documentation platform. A modern alternative to Confluence and Notion with real-time collaboration, diagram support, and multilingual capabilities.",
"tagline": "Collaborative wiki and documentation platform", "tagline": "Collaborative wiki and documentation platform",
"version": "1.0.0", "version": "1.0.0",
"healthCheckPath": "/api/health", "healthCheckPath": "/",
"httpPort": 3000, "httpPort": 3000,
"addons": { "addons": {
"postgresql": {}, "postgresql": {},

View File

@@ -22,10 +22,11 @@ RUN mkdir -p /tmp/data /app/data && \
# Copy startup scripts # Copy startup scripts
COPY start.sh /app/code/ COPY start.sh /app/code/
COPY healthcheck.js /app/code/
COPY nginx.conf /etc/nginx/sites-available/default COPY nginx.conf /etc/nginx/sites-available/default
# Make scripts executable # Make scripts executable
RUN chmod +x /app/code/start.sh RUN chmod +x /app/code/start.sh /app/code/healthcheck.js
# Install supervisord and netcat for process management and connectivity checks # Install supervisord and netcat for process management and connectivity checks
RUN apt-get update && \ RUN apt-get update && \

34
healthcheck.js Normal file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env node
const http = require('http');
// Simple health check that attempts to connect to the app
const options = {
hostname: 'localhost',
port: 3001,
path: '/',
method: 'GET',
timeout: 5000
};
const req = http.request(options, (res) => {
console.log(`Health check: ${res.statusCode}`);
if (res.statusCode === 200) {
process.exit(0);
} else {
process.exit(1);
}
});
req.on('error', (err) => {
console.error('Health check failed:', err.message);
process.exit(1);
});
req.on('timeout', () => {
console.error('Health check timeout');
req.abort();
process.exit(1);
});
req.end();

View File

@@ -55,10 +55,12 @@ if [ -n "${CLOUDRON_REDIS_URL}" ]; then
export REDIS_PORT="${REDIS_PORT}" export REDIS_PORT="${REDIS_PORT}"
export REDIS_PASSWORD="${REDIS_PASSWORD}" export REDIS_PASSWORD="${REDIS_PASSWORD}"
# Also export the full URL in case it's needed # Also export the full URL in case it's needed - try different formats
export REDIS_URL="redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/0" export REDIS_URL="redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}"
export REDIS_DB="0"
echo "=> Redis configured: host=${REDIS_HOST}, port=${REDIS_PORT}" echo "=> Redis configured: host=${REDIS_HOST}, port=${REDIS_PORT}"
echo "=> Final Redis URL: ${REDIS_URL}"
else else
echo "=> Warning: Redis URL not provided" echo "=> Warning: Redis URL not provided"
# Set dummy Redis URL to prevent validation errors # Set dummy Redis URL to prevent validation errors