Skip to content

Commit

Permalink
feat(produktion): Implementiere Docker-basierte Produktionsumgebung
Browse files Browse the repository at this point in the history
- 🐳 Erstelle Dockerfile zur Containerisierung
- 🚀 Richte automatischen Build und Push zu DockerHub ein
- 📄 Entwickle docker-compose.yml für einfache Bereitstellung
- 🔧 Ersetze hartcodierte Pfade durch API-Aufrufe zur Vermeidung von CORS-Problemen
- 🏠 Vereinfache Self-Hosting-Prozess durch Konfiguration mit einer einzigen URL
- 🖥️ Passe server.js an neue Produktionsstruktur an
- 🐛 Behebe Fehler, die durch Übergang zur Produktionsumgebung entstanden sind

Dieser Commit markiert den **Übergang von der Entwicklungs- zu einer robusten,
containerisierten Produktionsumgebung**. Er verbessert die Bereitstellbarkeit
und reduziert die Konfigurationskomplexität für Endbenutzer.
  • Loading branch information
Simon Luthe authored and Simon Luthe committed Jul 25, 2024
1 parent 35d2b5b commit d60ffcb
Show file tree
Hide file tree
Showing 13 changed files with 888 additions and 350 deletions.
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
npm-debug.log
.git
.gitignore
25 changes: 25 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Docker

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the Docker image
run: docker build . --file Dockerfile --tag hymnoscripe:$(date +%s)
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: revisoren
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push to Docker Hub
uses: docker/build-push-action@v6
with:
push: true
tags: revisoren/hymnoscripe:latest
32 changes: 32 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
FROM node:22 as build

WORKDIR /app

# Kopieren und Installieren der Backend-Abhängigkeiten
COPY backend/package*.json ./backend/
RUN cd backend && npm install

# Kopieren und Bauen des Frontends
COPY frontend ./frontend

# Kopieren der Backend-Dateien
COPY backend ./backend

# Kopieren der Konfigurationsdateien
COPY init.sql ./

FROM node:22-slim

WORKDIR /app

# Kopieren der gebauten Anwendung aus dem Build-Stage
COPY --from=build /app/backend ./backend
COPY --from=build /app/frontend ./frontend
COPY --from=build /app/init.sql ./

WORKDIR /app/backend
RUN npm install --only=production

EXPOSE 9615

CMD ["node", "backend/server.js"]
40 changes: 16 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Gottesdienst-Liedblatt Generator
# HymnoScribe

Dieses Projekt ist ein umfassendes Tool zur Erstellung von Gottesdienst-Liedblättern. Es bietet eine benutzerfreundliche Oberfläche zum Erstellen, Bearbeiten und Verwalten von Gottesdienstobjekten sowie zur Generierung von PDF-Liedblättern.
[![Docker](https://github.com/Revisor01/HymnoScribe/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/Revisor01/HymnoScribe/actions/workflows/docker-publish.yml)

HymnoScribe ist ein umfassendes Tool zur Erstellung von Gottesdienst-Liedblättern. Es bietet eine benutzerfreundliche Oberfläche zum Erstellen, Bearbeiten und Verwalten von Gottesdienstobjekten sowie zur Generierung von PDF-Liedblättern.

## Funktionen

Expand All @@ -15,14 +17,16 @@ Dieses Projekt ist ein umfassendes Tool zur Erstellung von Gottesdienst-Liedblä

## Installation und Nutzung

### Lokale Installation

1. Klonen Sie das Repository:
```
git clone https://github.com/ihr-benutzername/gottesdienst-liedblatt-generator.git
git clone https://github.com/Revisor01/HymnoScribe.git
```

2. Navigieren Sie in das Projektverzeichnis:
```
cd gottesdienst-liedblatt-generator
cd HymnoScribe
```

3. Installieren Sie die Abhängigkeiten:
Expand All @@ -37,34 +41,22 @@ Dieses Projekt ist ein umfassendes Tool zur Erstellung von Gottesdienst-Liedblä

5. Öffnen Sie einen Webbrowser und navigieren Sie zu `http://localhost:3000`

## Docker-Nutzung

1. Bauen Sie das Docker-Image:
```
docker build -t gottesdienst-liedblatt-generator .
```

2. Starten Sie den Container:
```
docker run -p 3000:3000 -v /pfad/zum/upload/ordner:/app/uploads gottesdienst-liedblatt-generator
```
### Docker-Nutzung

## Hinweise zur Nutzung
Sie können HymnoScribe auch über Docker ausführen:

- **Admin-Oberfläche**: Verwenden Sie die Admin-Oberfläche, um neue Gottesdienstobjekte hinzuzufügen oder bestehende zu bearbeiten.
- **Liedblatt-Erstellung**: Ziehen Sie Objekte aus dem Pool in den Arbeitsbereich, um Ihr Liedblatt zu gestalten.
- **PDF-Generierung**: Wählen Sie das gewünschte Format und klicken Sie auf "PDF generieren", um Ihr Liedblatt als PDF zu erstellen.
- **Sessions und Vorlagen**: Nutzen Sie das Session-Management, um Ihre Arbeit zu speichern und später fortzusetzen. Erstellen Sie Vorlagen für wiederkehrende Liedblatt-Strukturen.
```
docker run -p 3000:3000 -v /pfad/zum/upload/ordner:/app/uploads revisoren/hymnoscripe:latest
```

## Hinweise zur Ausgabe
## Entwicklung

- Die generierten PDFs sind optimiert für die Druckausgabe in A4 und A3 duplex.
- Die Broschüren-Option ermöglicht es, Liedblätter im Booklet-Format zu erstellen, ideal für gefaltete Gottesdienstordnungen.
HymnoScribe verwendet GitHub Actions für kontinuierliche Integration und Bereitstellung. Bei jedem Push in den `main`-Branch wird automatisch ein neues Docker-Image gebaut und auf Docker Hub veröffentlicht.

## Beitrag

Beiträge zum Projekt sind willkommen. Bitte erstellen Sie einen Pull Request oder eröffnen Sie ein Issue für Vorschläge und Fehlermeldungen.

## Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die [LICENSE](LICENSE) Datei für Details.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die [LICENSE](LICENSE) Datei für Details.
Loading

0 comments on commit d60ffcb

Please sign in to comment.