Willkommen zu meinem Blogbeitrag über selbstgehostete GitHub Actions und wie sie für das Deployment von Docker Compose genutzt werden können. GitHub Actions ermöglicht es Entwicklern, Automatisierungsschritte auszuführen, wenn bestimmte Ereignisse in einem Repository eintreten. Durch das Hosting der Actions auf eigenen Servern können Entwickler mehr Kontrolle über ihre Workflows und Ressourcen haben. In diesem Beitrag werden wir uns darauf konzentrieren, wie man selbstgehostete GitHub Actions für das Compose-Deployment von Docker nutzen kann.
Warum selbstgehostete GitHub Actions?
Die Verwendung von selbstgehosteten GitHub Actions bietet mehrere Vorteile. Zunächst einmal ermöglicht sie eine nahtlose Integration in Ihre eigene Infrastruktur. Sie können Ihre eigenen Server, virtuellen Maschinen oder Cloud-Instanzen nutzen, um die Actions auszuführen. Dadurch haben Sie die volle Kontrolle über die Ressourcen, was die Leistung verbessert und die Abhängigkeit von den GitHub-Hosted-Runnern reduziert.
Darüber hinaus können selbstgehostete Actions auch dann ausgeführt werden, wenn GitHub-Hosted-Runner nicht verfügbar sind oder wenn Sie spezifische Anforderungen an Ihre Workflow-Umgebung haben, die nicht von den GitHub-Hosted-Runnern abgedeckt werden. Dies macht die selbstgehosteten Actions ideal für Unternehmen oder Projekte, die strenge Sicherheitsrichtlinien haben oder auf spezialisierte Hardware angewiesen sind.
Voraussetzungen
Bevor wir mit der Einrichtung der selbstgehosteten GitHub Actions fortfahren, müssen Sie über die folgenden Voraussetzungen verfügen:
- Ein GitHub-Konto und ein Repository mit einem Docker Compose-Projekt.
- Einen Server oder eine virtuelle Maschine, auf der Sie die Actions ausführen möchten.
Einrichten der selbstgehosteten GitHub Actions
Die GitHub Action wird durch das Auslösen eines Ereignisses aktiviert, und zwar immer dann, wenn der vorherige Workflow „Docker Build“ abgeschlossen wurde. Hier ist die Konfiguration der „Docker Deployment“-Action:
name: Docker Deployment
on:
workflow_run:
workflows:
- Docker Build
types:
- completed
env:
REGISTRY: ghcr.io
USERNAME: ${{ github.actor }}
PASSWORD: ${{ secrets.GITHUB_TOKEN }}
IMAGE_NAME: ${{ github.event.repository.name }}
COMPOSE_CONFIGURATION_FILE: /home/docker-compose.yml
jobs:
deployment:
runs-on: self-hosted
steps:
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME }}
password: ${{ env.PASSWORD }}
- name: Pull service image
run: docker compose -f ${{ env.COMPOSE_CONFIGURATION_FILE }} pull ${{ env.IMAGE_NAME }}
- name: Create and start containers
run: docker compose -f ${{ env.COMPOSE_CONFIGURATION_FILE }} up -d ${{ env.IMAGE_NAME }}
- name: Remove unused data
run: docker system prune -f
Erklärung der Schritte
- Auslöser der Action: Die Action wird durch das Ereignis „workflow_run“ aktiviert, wenn der Workflow „Docker Build“ abgeschlossen ist. Dadurch wird sichergestellt, dass das Docker-Service-Image vor dem Deployment erfolgreich gebaut wurde.
- Umgebungsvariablen: In der „env“-Sektion werden einige Umgebungsvariablen definiert, die in den späteren Schritten verwendet werden. Diese Variablen enthalten die Zugangsdaten für das Container-Registry-Login und den Namen des Docker-Service-Images.
- Log-in bei der Container-Registry: Hier wird der Docker-Login-Schritt ausgeführt, um sich bei der Container-Registry (hier „ghcr.io“) mit den bereitgestellten Anmeldeinformationen anzumelden.
- Service-Image herunterladen: Der Schritt „Pull service image“ führt den Befehl „docker compose pull“ aus, um das Docker-Service-Image aus der Registry herunterzuladen. Dabei wird das entsprechende Docker-Compose-Konfigurationsfile (hier „/home/docker-compose.yml“) verwendet.
- Container erstellen und starten: Mit dem Schritt „Create and start containers“ wird der Befehl „docker compose up“ ausgeführt, um die Docker-Container gemäß der angegebenen Konfiguration zu erstellen und zu starten.
- Entfernen nicht verwendeter Daten: Abschließend wird der Befehl „docker system prune -f“ ausgeführt, um nicht verwendete Daten und Container zu bereinigen und den Speicherplatz zu optimieren.
Deployment starten
Nachdem Sie die „Docker Compose-Deployment“-Action konfiguriert haben, wird sie automatisch ausgeführt, sobald der vorherige Workflow „Docker Build“ erfolgreich abgeschlossen wurde. Dadurch wird das Docker-Service-Image auf Ihrem selbstgehosteten Server bereitgestellt und Ihre Anwendung ist einsatzbereit.
Mit dieser GitHub Action können Sie den Deployment-Prozess Ihrer Docker-Anwendung optimieren und von den Vorteilen einer selbstgehosteten Umgebung profitieren. Sie haben die volle Kontrolle über Ihre Ressourcen und können sicherstellen, dass Ihre Anwendung reibungslos und effizient läuft. Viel Erfolg bei Ihren Docker-Deployments!
Fazit
Die Verwendung von selbstgehosteten GitHub Actions bietet Ihnen mehr Kontrolle über Ihre CI/CD-Prozesse und ermöglicht es Ihnen, Ihre Workflows nahtlos in Ihre eigene Infrastruktur zu integrieren. In diesem Blogbeitrag haben wir gelernt, wie man selbstgehostete Actions für das Deployment von Docker Compose-Projekten nutzt. Jetzt haben Sie die Möglichkeit, Ihre Continuous Deployment-Pipeline weiter anzupassen und Ihre Entwicklungsumgebung zu verbessern.
Wir hoffen, dass Ihnen dieser Leitfaden dabei geholfen hat, selbstgehostete GitHub Actions in Ihrem Entwicklungsworkflow zu nutzen. Happy Coding!