Files
docker-service-discovery/README.md

2.1 KiB

Docker Backend Display

This project provides a web interface to display information about running Docker services, particularly useful for local development environments. It consists of a Node.js backend that interacts with the Docker socket and a React frontend for visualization.

Features

  • Discovers running Docker containers with exposed ports.
  • Prioritizes Traefik-exposed services, showing their public URLs.
  • For non-Traefik services, identifies and makes clickable local IP addresses accessible from the client's subnet.
  • Real-time updates for container start/stop events.
  • Modern and responsive user interface with frosted glass effects for service cards.

Prerequisites

To run this application, you need to have the following installed:

  • Docker: For running containers and interacting with the Docker daemon.
  • Docker Compose: For orchestrating the backend and frontend services.
  • Node.js & npm: (Optional, for local development outside Docker)

Running the Application Locally with Docker Compose

  1. Clone the repository:

    git clone <your-repository-url>
    cd docker-backend-display
    
  2. Start the services:

    docker compose up --build
    

    This command will:

    • Build the Docker images for both the backend and frontend services.
    • Start the backend service, which connects to your Docker daemon.
    • Start the frontend service.
  3. Access the application:

    • Frontend: Open your web browser and navigate to http://localhost:3000.
    • Backend API: The backend API is available at http://localhost:3001/api/services.

Accessing Services

  • The frontend will display cards for each discovered Docker service.
  • If a service is exposed via Traefik, clicking its card will take you to the Traefik-assigned URL.
  • If a service is not Traefik-exposed but has an IP accessible from your local network, clicking its card will take you to that local IP and port.
  • Otherwise, the card will list all accessible container IPs and ports as individual clickable links.