Docker: Używanie zmiennych środowiskowych w docker-compose.yml

Ta dokumentacja jest częścią przewodnika Wdrażanie za pomocą GitHub Actions. Pełny przewodnik znajdziesz tutaj: Dowiedz się, jak wdrażać kontenery Docker przy użyciu GitHub Actions.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Docker cloud CaaS (Containers as a Service), które zapewnia wiele korzyści, w tym:

  • Łatwe wdrażanie kontenerów do produkcji za pomocą prostego docker-compose up.
  • Dostosowywana nazwa domeny zabezpieczona HTTPS (na przykład, https://api.twoja-firma.com, https://www.twoja-firma.com, https://backoffice.twoja-firma.com).
  • Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
  • Bezproblemowe aktualizacje za pomocą jednego kliknięcia.

Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Docker CaaS cloud hosting Stackhero i wdrożyć swoje kontenery do produkcji!

Możesz zdefiniować zmienne środowiskowe w swoim projekcie GitHub, które będą dostępne w pliku docker-compose.yml. Jest to bardzo przydatne, jeśli chcesz wdrażać na różnych domenach (np. staging.my-company.com dla staging i my-company.com dla produkcji).

  1. W GitHub przejdź do Settings > Environments i utwórz zmienną środowiskową o nazwie WEBSITE_DOMAIN.
  2. Dla środowiska staging ustaw WEBSITE_DOMAIN na "staging.my-company.com".
  3. Dla środowiska produkcyjnego ustaw WEBSITE_DOMAIN na "my-company.com".

Następnie zaktualizuj plik .github/workflows/deploy-to-stackhero.yml, aby przekazać zmienną WEBSITE_DOMAIN do akcji Stackhero GitHub Action:

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 }}

Teraz zaktualizuj plik docker-compose.yml, aby używał zmiennej WEBSITE_DOMAIN zamiast wpisanej na stałe nazwy domeny:

services:
  test:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Używa zmiennej środowiskowej WEBSITE_DOMAIN jako nazwy domeny.
      - "traefik.http.routers.test.tls.certresolver=letsencrypt"