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).
- Gehen Sie in GitHub zu Settings > Environments und erstellen Sie eine Umgebungsvariable mit dem Namen
WEBSITE_DOMAIN. - Für die Staging-Umgebung setzen Sie
WEBSITE_DOMAINauf "staging.my-company.com". - Für die Produktionsumgebung setzen Sie
WEBSITE_DOMAINauf "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"