Jede Komponente des Systems wird in einem eigenen Docker-Container ausgeführt:
-
Frontend-Container:
- NGINX dient als Webserver, um die Angular-Anwendung bereitzustellen.
- Die Anwendung wird in den Ordner
/usr/share/nginx/html
kopiert, und NGINX liefert die Dateien auf Port80
.
-
Backend-Container:
- Ein Java Spring Boot-Service, der eine REST-API bereitstellt, läuft auf Port
9090
. - Das Backend verbindet sich mit RabbitMQ, um Nachrichten auszutauschen, und greift auf die PostgreSQL-Datenbank zu, um Ticketdaten zu verwalten.
- Ein Java Spring Boot-Service, der eine REST-API bereitstellt, läuft auf Port
-
RabbitMQ-Container:
- RabbitMQ dient als Messaging-System, um lose Kopplung zwischen Backend-Diensten oder zwischen dem Backend und zukünftigen Diensten zu ermöglichen.
- Die Verwaltungsschnittstelle ist auf Port
15672
zugänglich, während die Standard-AMQP-Portnummer5672
verwendet wird.
-
PostgreSQL-Datenbank (optional - falls benötigt):
- PostgreSQL wird als Datenbank verwendet, um die Tickets und Benutzerinformationen zu speichern.
Das Ticketing-System besteht aus den folgenden Prozessen:
-
Frontend:
- Benutzer greifen über ihren Browser auf das Frontend zu.
- Das Frontend ist eine Angular-Anwendung, die in einem NGINX-Container gehostet wird und mit dem Backend über eine REST-API kommuniziert.
-
Backend:
- Das Backend ist eine Spring Boot-Anwendung, die auf eingehende HTTP-Anfragen des Frontends reagiert.
- Es führt CRUD-Operationen auf Tickets durch, die in der PostgreSQL-Datenbank gespeichert sind.
- Es nutzt RabbitMQ, um Nachrichten zu verarbeiten und Aufgaben asynchron zu erledigen, beispielsweise die Verarbeitung von Benachrichtigungen oder die Kommunikation mit anderen Services.
-
RabbitMQ:
- RabbitMQ fungiert als Message-Broker, der asynchrone Kommunikation zwischen Services ermöglicht. Zukünftige Erweiterungen könnten zusätzliche Dienste einführen, die auf verschiedene RabbitMQ-Nachrichten lauschen.
-
PostgreSQL-Datenbank:
- Die Datenbank speichert die Ticketinformationen, die vom Backend über die Datenbank-API (JDBC) verwaltet werden.
- Ein Benutzer navigiert zur Ticket-Erstellungsseite im Frontend und gibt die benötigten Daten ein.
- Das Frontend sendet eine HTTP POST-Anfrage an die REST-API des Backends (
/api/tickets
). - Das Backend speichert das Ticket in der PostgreSQL-Datenbank und sendet bei Bedarf eine Nachricht an RabbitMQ, um asynchrone Verarbeitungsschritte einzuleiten.
- Docker und Docker Compose müssen auf deinem System installiert sein.
-
Projekt klonen:
git clone https://github.com/BBZ-BL-IT/projektarbeit-the-ticket-system.git cd ticketing-system
-
Build und Starten der Container:
docker-compose up --build
-
Zugriff auf die Anwendung:
- Frontend: Gehe zu http://localhost/4200.
- Backend API: Zugriff über http://localhost:9090/api/tickets.
- Für die Übersicht der verschiedenen Komponente über http://localhost:9090/swagger-ui/index.html/
-
RabbitMQ Dashboard:
- Aufruf des RabbitMQ Dashboards unter http://localhost:15672.
- Standard-Anmeldedaten:
guest/guest
.
- Das Frontend verwendet Angular und NGINX zur Bereitstellung.
- Das Backend verwendet Spring Boot und stellt eine REST-API bereit.
- RabbitMQ dient der Nachrichtenvermittlung zwischen den Diensten.
Navigiere in das Frontend/ticketing-frontend
-Verzeichnis und entwickle wie gewohnt mit Angular CLI:
cd Frontend/ticketing-frontend
npm install
ng serve