Copper is a robust backend pipeline that integrates a PostgreSQL database, Redis caching, OpenTelemetry tracing, and monitoring with Prometheus and Grafana. The system is containerized using Docker and orchestrated with Docker Compose.
Service | Description |
---|---|
app | Main backend application (Go Gin server) |
nginx | Reverse proxy and load balancer |
db | PostgreSQL database |
redis | Redis for caching |
prometheus | Metrics collection and monitoring |
alertmanager | Alerts for Prometheus |
grafana | Visualization dashboard for metrics |
jaeger | Distributed tracing |
The pipeline follows a microservices-based approach, with each component running in a dedicated container. The Nginx service acts as an entry point, directing traffic to the app service, which interacts with PostgreSQL, Redis, and monitoring tools.
Ensure you have the following installed:
git clone https://github.com/AMS003010/Copper.git
cd Copper
Run the following command to build and start all services:
docker-compose up --build
To stop the running containers:
docker-compose down
The PostgreSQL database and Grafana data are stored in Docker volumes:
- copper_data → PostgreSQL
- grafana_data → Grafana dashboards
Service | Port |
---|---|
App (Go Backend) | 8080 |
Nginx Proxy | 80 |
PostgreSQL | 5432 |
Redis | 6379 |
Prometheus | 9090 |
Alertmanager | 9093 |
Grafana | 3000 |
Jaeger UI | 16686 |
- Jaeger UI (Tracing) →
http://localhost:16686
- Prometheus Metrics →
http://localhost:9090
- Grafana Dashboard →
http://localhost:3000
(Default login:admin/admin
)
If the app cannot connect to the database, ensure PostgreSQL is ready:
docker-compose logs db
To restart a specific service, run:
docker-compose restart <service_name>
Example:
docker-compose restart db
- @AMS003010 (Project Maintainer)
This project is licensed under the MIT License.
⚡ Copper Backend Pipeline - Scalable & Monitored ⚡