I implemented a production-style containerized web platform designed to demonstrate my skills in Docker, service orchestration, and basic observability concepts.
The stack consists of a FastAPI backend, a PostgreSQL database with persistent storage, an Nginx reverse proxy as the single public entrypoint, Prometheus for metrics collection, and Grafana for visualization. All services communicate inside a Docker Compose network using internal DNS resolution.
The backend exposes health, readiness, metrics, and database verification endpoints.
The image is built using a multi-stage Dockerfile, installs dependencies via pre-built wheels, runs as a non-root user, and includes a Docker healthcheck.
PostgreSQL is configured through environment variables and uses a named volume for data persistence.
Service startup order is managed through health-based dependencies.
Prometheus scrapes application metrics and stores time-series data, while Grafana is provisioned through configuration files to automatically load a Prometheus datasource and dashboard.
This ensures the entire observability stack is reproducible and infrastructure-defined.
The platform can be started with:
docker compose up --build