23
Jun 2025
Von Ahmad Osman
Produktivität in der Webentwicklung: Automatisierte Builds mit GitHub Actions, Docker, Spring Boot & React
In dieser Anleitung erfährst du, wie du deine Fullstack-Webanwendung mit GitHub Actions, Docker, Spring Boot und React automatisiert bauen, testen und deployen kannst – für eine moderne, effiziente CI/CD-Pipeline.
1. Projektstruktur
/backend
– Spring Boot Anwendung/frontend
– React Appdocker-compose.yml
– orchestriert beide Services.github/workflows/ci-cd.yml
– GitHub Actions Workflow
2. Dockerfile erstellen (Backend & Frontend)
2.1 Backend: /backend/Dockerfile
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY mvnw ./
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw package -DskipTests
ENTRYPOINT ["java","-jar","target/myapp.jar"]
2.2 Frontend: /frontend/Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY src src
RUN npm run build
FROM nginx:alpine
COPY --from=0 /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
3. docker-compose.yml definieren
version: "3.8"
services:
backend:
build: ./backend
ports:
- "8080:8080"
frontend:
build: ./frontend
ports:
- "3000:80"
Führe docker-compose up --build
aus, um beide Services lokal zu starten.
4. GitHub Actions Workflow (CI/CD)
Erstelle die Datei .github/workflows/ci-cd.yml
:
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Java 17 einrichten
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Backend bauen & testen
working-directory: backend
run: ./mvnw test
- name: Node.js einrichten
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Frontend bauen
working-directory: frontend
run: npm install && npm run build
docker_build_and_push:
needs: build_and_test
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v3
- name: Login bei Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Backend-Image bauen & pushen
working-directory: backend
uses: docker/build-push-action@v4
with:
context: ./backend
tags: deinuser/backend:latest
- name: Frontend-Image bauen & pushen
working-directory: frontend
uses: docker/build-push-action@v4
with:
context: ./frontend
tags: deinuser/frontend:latest
5. GitHub Secrets einrichten
DOCKERHUB_USER
– dein Benutzername bei DockerDOCKERHUB_TOKEN
– generiertes Zugriffstoken
6. Deployment-Optionen
- Docker Compose auf einem VPS – Pull & Restart via SSH
- Kubernetes – Helm Charts oder Kustomize verwenden
- Cloud Services – AWS ECS, Google Cloud Run o.Ä.
7. Best Practices
- Caching von Maven- & Node-Dependencies spart Zeit
- Verwende
mvn verify
undeslint
zur Codequalität - Nutze Versionstags statt
:latest
für Images - Füge Healthchecks & Monitoring (z.B. Prometheus) hinzu
Fazit
Mit dieser CI/CD-Pipeline automatisierst du den gesamten Prozess vom Code bis zur produktionsreifen Anwendung – für maximale Effizienz und weniger manuelle Fehler.
Im nächsten Schritt: automatische Tests, Staging-Umgebungen, Canary-Releases und DB-Migrationen!
Fügen Sie Ihren Kommentar hinzu