import React, { useState, useEffect } from 'react'; import { Container, RefreshCw, Clock } from 'lucide-react'; import { getContainers } from '../utils/api'; function formatDate(dateStr) { if (!dateStr) return 'N/A'; try { return new Date(dateStr).toLocaleString('fr-FR'); } catch { return dateStr; } } export default function DockerPage() { const [containers, setContainers] = useState([]); const [loading, setLoading] = useState(true); const fetchContainers = async () => { setLoading(true); try { const res = await getContainers(); setContainers(res.data); } catch (err) { console.error('Erreur chargement conteneurs:', err); } finally { setLoading(false); } }; useEffect(() => { fetchContainers(); const interval = setInterval(fetchContainers, 15000); return () => clearInterval(interval); }, []); const stateColors = { running: 'text-emerald-400 bg-emerald-500/10 border-emerald-500/20', exited: 'text-red-400 bg-red-500/10 border-red-500/20', created: 'text-amber-400 bg-amber-500/10 border-amber-500/20', restarting: 'text-amber-400 bg-amber-500/10 border-amber-500/20', }; return (
{/* Header */}

Conteneurs Docker

Vue d'ensemble de tous les conteneurs sur le serveur

{/* Containers Table */}
{loading && containers.length === 0 ? ( ) : containers.length === 0 ? ( ) : ( containers.map((c) => ( )) )}
Nom Image État Statut ID Créé
Aucun conteneur trouvé
{c.names.join(', ')} {c.image} {c.state} {c.status} {c.id} {formatDate(c.created)}
); }