Docker Compose is the fastest way to runDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Miguel-Rodriguez15/msvc/llms.txt
Use this file to discover all available pages before exploring further.
msvc-usuarios and msvc-cursos locally alongside their databases. msvc-auth and msvc-gateway are not included in the Compose file — for the full authenticated flow you must deploy to Kubernetes.
What Docker Compose Starts
| Service | Container | Port (host:container) | Purpose |
|---|---|---|---|
| MySQL 8 | mysql8 | 3307:3306 | msvc-usuarios database |
| PostgreSQL | postgres-cursos | 5532:5432 | msvc-cursos database |
| msvc-usuarios | msvc-usuarios | 8001:8001 | Users REST API |
| msvc-cursos | msvc-cursos | 8002:8002 | Courses REST API |
Prerequisites
- Docker Desktop (macOS / Windows) or Docker Engine + Docker Compose plugin (Linux)
- Docker Hub access to pull the public images:
miguelrodriguez15/msvc-usuarios:latestmiguelrodriguez15/msvc-cursos:latest
Quick Start
Databases only (recommended for development)
Start only the database containers first. This is faster and lets you run the Java services from your IDE against real databases:
Full stack (databases + services)
Start all four containers — both databases and both microservices — in detached mode:
Verify health endpoints
Spring Actuator exposes health probes on both services. A healthy response confirms the service started and connected to its database:Expected response:
Stopping and Cleanup
Building Images Locally
Thedocker-compose.yml references pre-built images from Docker Hub by default. You can build locally from source and use those instead:
env_file: msvc-usuarios/.env and env_file: msvc-cursos/.env. Create those files in the respective subdirectories to supply or override any environment variables for local development:
Persistent Volumes
Docker named volumes keep database data intact across container restarts:| Volume | Mounted in | Data location |
|---|---|---|
data-mysql | mysql8 | /var/lib/mysql |
data-postgres | postgres-cursos | /var/lib/postgresql/data |
docker-compose.yml:
Shared Network
All four services are attached to a Docker bridge network namedspring. Within that network, containers resolve each other by service name — for example, msvc-usuarios connects to MySQL using the hostname mysql8 and msvc-cursos connects to PostgreSQL using postgres-cursos.
msvc-auth (the OAuth2 authorization server) and msvc-gateway are not part of docker-compose.yml. Running the full authenticated flow — obtaining a JWT and using it as a Bearer token — requires deploying all four services to Kubernetes. See Kubernetes Setup.