Docker Images for UI and Backend
- Complexity: Moderate
- Stack: DevOps / Full-stack
As a developer, I want to build and run the application as Docker containers so that I can deploy the frontend and backend independently in any environment.
Description
The project currently has a docker-compose.yml under docker/development/ that only runs a PostgreSQL 18 database. There are no Dockerfiles for the Spring Boot backend (onlineshopapi) or the Angular frontend (onlineshopui). This story adds production-ready Docker images for both services and extends the existing docker-compose.yml so the full application stack can be launched with a single command.
The backend is a Spring Boot 4 application built with Maven and Java 21. The frontend is an Angular 21 application using Vite for builds and should be served via a static file server in production. Both images should follow container best practices: minimal base images, multi-stage builds to reduce image size, and externalized configuration via environment variables.
Acceptance Criteria
- [ ] A Dockerfile exists for the backend that builds and runs the Spring Boot application
- [ ] A Dockerfile exists for the frontend that builds the Angular app and serves it via a web server
- [ ] Both Dockerfiles use multi-stage builds to keep images small
- [ ]
docker compose upstarts the database, backend, and frontend - [ ] The frontend is reachable in a browser and loads the Angular SPA with proper client-side routing support
- [ ] The frontend container proxies API requests (e.g.,
/api/**) to the backend container - [ ] The backend connects to the PostgreSQL database and runs Flyway migrations on startup
- [ ] Environment-specific values (database URL, API URL, CORS origins) are configurable via environment variables or compose file — not hardcoded in the images