Bereitstellung von Bifolk aus der GitLab Container Registry¶
Diese Anleitung erklärt, wie Sie Bifolk mit vorgefertigten Docker-Images aus der GitLab Container Registry bereitstellen.
Voraussetzungen¶
- Docker Engine 20.10+ und Docker Compose 2.0+
- Git (zum Klonen des Repositories für Konfigurationsdateien)
- Zugriff auf die GitLab Container Registry (öffentliche Images erfordern keine Authentifizierung; private Images erfordern ein Token)
Übersicht¶
Anstatt Docker-Images lokal zu bauen, können Sie vorgefertigte Images verwenden, die in der GitLab Container Registry veröffentlicht werden. Dieser Ansatz:
- Spart Build-Zeit - Kein Bauen von Images auf Ihrem Bereitstellungsserver nötig
- Gewährleistet konsistente Bereitstellungen - Dieselben getesteten Images über Umgebungen hinweg verwenden
- Vereinfacht Aktualisierungen - Neue Versionen mit einem einzigen Befehl abrufen
- Verwendet verifizierte Images - Images werden über CI/CD-Pipeline gebaut und getestet
Schnellstart¶
1. Repository klonen (für Konfigurationsdateien)¶
2. Secrets konfigurieren¶
Kopieren Sie die Beispiel-Secrets und konfigurieren Sie sie mit Ihren tatsächlichen Werten:
Bearbeiten Sie Dateien in secrets/:
- secret_key.txt - Django SECRET_KEY (generieren mit: python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())")
- db_password.txt - PostgreSQL-Passwort
- email_password.txt - SMTP-Passwort für E-Mail-Funktionalität
Richtige Berechtigungen setzen:
3. Docker Compose einrichten¶
Beispielkonfiguration kopieren:
docker-compose.yml bearbeiten und die Image-URLs setzen:
services:
bifolk-app:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:latest
bifolk-docs:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-docs:latest
4. Umgebung konfigurieren (Optional)¶
Erstellen Sie eine .env-Datei, wenn Sie Standardeinstellungen überschreiben müssen:
.env bearbeiten, um Einstellungen anzupassen wie:
- DJANGO_DEBUG=False (wichtig für Produktion!)
- DJANGO_ALLOWED_HOSTS=ihre-domain.de
- EMAIL_HOST=smtp.example.com
- Datenbankeinstellungen
5. Abrufen und starten¶
# Neueste Images aus Registry abrufen
docker-compose pull
# Dienste im Hintergrund starten
docker-compose up -d
# Logs anzeigen
docker-compose logs -f
6. Bereitstellung verifizieren¶
Container-Status prüfen:
Anwendungslogs anzeigen:
Auf die Anwendung zugreifen: - Anwendung: http://localhost:8000 - Dokumentation: http://localhost:8001
Image-Tags¶
Images werden mit mehreren Tags veröffentlicht:
| Tag | Beschreibung | Anwendungsfall |
|---|---|---|
stable |
Neueste versionierte Freigabe (gleich wie neueste v*..) | Produktion (empfohlen) |
latest |
Neuester Build vom next-release-Branch | Produktion |
v0.x.x |
Spezifische Version (semantische Versionierung) | Produktion (fixierte Version) |
Tag-Beispiele¶
# Stabile Freigabe verwenden (empfohlen für Produktion)
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:stable
# Neuestes vom next-release-Branch verwenden
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:latest
# Auf spezifische Version fixieren
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:v0.1.0
Produktionsbereitstellungs-Empfehlungen¶
1. Stabile oder spezifische Versions-Tags verwenden¶
Für Produktion verwenden Sie das stable-Tag oder spezifische Versions-Tags anstelle von latest:
services:
bifolk-app:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:stable # Immer neueste Freigabe
bifolk-docs:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-docs:stable
Oder auf eine spezifische Version für maximale Kontrolle fixieren:
services:
bifolk-app:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-app:v0.1.0 # Auf spezifische Version fixieren
bifolk-docs:
image: registry.code.wdmt.de/bifolk/bifolk/bifolk-docs:v0.1.0
2. Debug-Modus deaktivieren¶
Stellen Sie sicher, dass DJANGO_DEBUG=False in Produktion:
3. Allowed Hosts konfigurieren¶
Richtige erlaubte Hosts für Ihre Domain setzen:
4. Starke Secrets verwenden¶
- Starken SECRET_KEY generieren
- Komplexe Datenbankpasswörter verwenden
- E-Mail-Zugangsdaten sichern
5. E-Mail konfigurieren¶
Richtige SMTP-Einstellungen für E-Mail-Funktionalität einrichten:
environment:
- EMAIL_HOST=smtp.example.com
- EMAIL_PORT=587
- EMAIL_USE_TLS=True
- EMAIL_USER=ihre-email@example.com
- DEFAULT_FROM_EMAIL=noreply@ihredomain.de
6. Reverse-Proxy verwenden¶
Für Produktion einen Reverse-Proxy (Nginx, Traefik) verwenden für: - SSL/TLS-Terminierung - Lastverteilung - Bereitstellung statischer Dateien - Request-Filterung
Auf neue Versionen aktualisieren¶
Methode 1: Auf neueste Freigabe aktualisieren¶
# Neueste Images abrufen
docker-compose pull
# Container mit neuen Images neu erstellen
docker-compose up -d
# Logs zur Verifizierung anzeigen
docker-compose logs -f bifolk-app
Methode 2: Auf spezifische Version aktualisieren¶
docker-compose.ymlbearbeiten und Image-Tags ändern:
- Abrufen und neu starten:
Methode 3: Rollback¶
Um auf eine frühere Version zurückzukehren:
docker-compose.ymlmit dem vorherigen Versions-Tag bearbeiten:
- Abrufen und neu starten:
Authentifizierung für private Images¶
Wenn die Registry privat ist, müssen Sie sich bei der GitLab Container Registry authentifizieren.
Personal Access Token (PAT) erstellen¶
- Gehen Sie zu GitLab → Benutzereinstellungen → Access Tokens
- Klicken Sie auf "Neues Token hinzufügen"
- Berechtigung auswählen:
read_registry - Token generieren und kopieren
Bei Registry anmelden¶
Nach der Authentifizierung können Sie private Images normal abrufen.
Fehlerbehebung¶
Image-Abruf fehlgeschlagen¶
Problem: Error response from daemon: manifest for registry.code.wdmt.de/... not found
Lösungen: - Verifizieren, dass der Image-Tag in der Registry existiert (GitLab Container Registry-Seite prüfen) - Sicherstellen, dass die Image-URL korrekt ist - Wenn die Registry privat ist, mit PAT authentifizieren (siehe Authentifizierungs-Abschnitt) - Internetverbindung prüfen
Container startet nicht¶
Problem: Container beendet sich sofort nach dem Start
Lösungen:
-
Logs prüfen:
-
Verifizieren, dass Secrets konfiguriert sind:
-
Sicherstellen, dass Datenbank bereit ist:
Datenbankverbindungsprobleme¶
Problem: could not connect to server: Connection refused
Lösungen:
- Verifizieren, dass
DB_HOSTaufbifolk-db(den Dienstnamen) gesetzt ist -
Prüfen, ob Datenbankcontainer läuft:
-
Datenbanklogs überprüfen: