Docker: Umgebungsvariablen in docker-compose.yml verwenden

Diese Dokumentation ist Teil des Mit GitHub Actions bereitstellen-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Erfahren Sie, wie Sie Ihre Docker-Container mit GitHub Actions bereitstellen.

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Docker Cloud CaaS (Containers as a Service) Lösung, die zahlreiche Vorteile bietet, darunter:

  • Einfache Bereitstellung Ihrer Container in der Produktion mit nur einem docker-compose up.
  • Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://api.ihre-firma.com, https://www.ihre-firma.com, https://backoffice.ihre-firma.com).
  • Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
  • Mühelose Updates mit nur einem Klick.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Docker CaaS Cloud Hosting Lösung von Stackhero auszuprobieren und Ihre Container in der Produktion bereitzustellen!

Sie können in Ihrem GitHub-Projekt Umgebungsvariablen definieren, die innerhalb Ihrer docker-compose.yml-Datei verfügbar sind. Das ist besonders hilfreich, wenn Sie auf verschiedene Domains deployen möchten (z.B. staging.my-company.com für Staging und my-company.com für Produktion).

  1. Gehen Sie in GitHub zu Settings > Environments und erstellen Sie eine Umgebungsvariable mit dem Namen WEBSITE_DOMAIN.
  2. Für die Staging-Umgebung setzen Sie WEBSITE_DOMAIN auf "staging.my-company.com".
  3. Für die Produktionsumgebung setzen Sie WEBSITE_DOMAIN auf "my-company.com".

Anschließend aktualisieren Sie Ihre Datei .github/workflows/deploy-to-stackhero.yml, um die Variable WEBSITE_DOMAIN an die Stackhero GitHub Action zu übergeben:

name: Deploy to Stackhero
description: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-docker-containers-to-stackhero@v1
      with:
        certificates_password: ${{ secrets.STACKHERO_CERTIFICATES_PASSWORD }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}
        deployment_command: ${{ vars.STACKHERO_DEPLOY_COMMAND }}
      env:
        WEBSITE_DOMAIN: ${{ vars.WEBSITE_DOMAIN }}

Jetzt aktualisieren Sie Ihre docker-compose.yml, um die Variable WEBSITE_DOMAIN anstelle eines fest codierten Domainnamens zu verwenden:

services:
  test:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Verwendet die Umgebungsvariable WEBSITE_DOMAIN als Domainnamen.
      - "traefik.http.routers.test.tls.certresolver=letsencrypt"