feat: add healthcheck endpoints, Dockerfiles, and admin middleware configuration

This commit is contained in:
2026-10-21 22:59:35 +02:00
parent f5548ab326
commit 2fdabe1dfd
7 changed files with 50 additions and 1 deletions

View File

@@ -17,5 +17,8 @@ RUN chown -R nextjs:nodejs /app
USER nextjs
HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=5 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1
# On lance directement via npm
CMD ["npm", "start"]

View File

@@ -18,5 +18,8 @@ RUN chown -R nextjs:nodejs /app
USER nextjs
HEALTHCHECK --interval=15s --timeout=5s --start-period=60s --retries=5 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3001/api/health || exit 1
# On lance directement via npm (avec push de la BD si besoin, ou juste start)
CMD ["sh", "-c", "npx prisma db push --schema=prisma/schema.prisma --accept-data-loss && (node ../scripts/ensure-admin.cjs || node scripts/ensure-admin.cjs || true) && npm start"]

View File

@@ -0,0 +1,15 @@
import { NextResponse } from 'next/server';
export const dynamic = 'force-dynamic';
export async function GET() {
return NextResponse.json(
{
status: 'ok',
service: 'afrohub-admin',
timestamp: new Date().toISOString(),
uptime: process.uptime(),
},
{ status: 200 }
);
}

View File

@@ -6,6 +6,7 @@ import { getTabForPathname, hasTabPermission } from '@/lib/permissions';
// Public endpoints and static resources
const PUBLIC_PREFIXES = [
'/login',
'/api/health',
'/api/cron',
'/api/external',
'/_next',

15
app/api/health/route.ts Normal file
View File

@@ -0,0 +1,15 @@
import { NextResponse } from 'next/server';
export const dynamic = 'force-dynamic';
export async function GET() {
return NextResponse.json(
{
status: 'ok',
service: 'afrohub-front',
timestamp: new Date().toISOString(),
uptime: process.uptime(),
},
{ status: 200 }
);
}

View File

@@ -34,6 +34,12 @@ services:
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1"]
interval: 15s
timeout: 5s
retries: 5
start_period: 30s
admin:
image: git.home.arrondeau.fr/streaper2/afrov2-admin:latest
@@ -51,6 +57,12 @@ services:
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3001/api/health || exit 1"]
interval: 15s
timeout: 5s
retries: 5
start_period: 60s
volumes:
pgdata:

File diff suppressed because one or more lines are too long