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 gotową do użycia platformę Docker cloud CaaS (Containers as a Service), zaprojektowaną z myślą o szybkich i niezawodnych wdrożeniach kontenerów:

  • Wdrażaj do produkcji za pomocą pojedynczego polecenia docker-compose up. Nie jest wymagana żadna dodatkowa konfiguracja: po prostu uruchom swoje kontenery.
  • Wybierz własną nazwę domeny, automatycznie zabezpieczoną przez HTTPS (na przykład: https://api.twoja-firma.com, https://www.twoja-firma.com lub https://backoffice.twoja-firma.com).
  • Korzystaj z wysokiej wydajności i solidnego poziomu bezpieczeństwa na prywatnej, dedykowanej infrastrukturze.
  • Aktualizuj środowisko jednym kliknięciem, co zapewnia prostą i bezproblemową konserwację.

Twoje kontenery mogą działać w środowisku produkcyjnym już w około pięć minut. Stackhero zarządza infrastrukturą, aktualizacjami i bezpieczeństwem za Ciebie, dzięki czemu możesz skupić się na dostarczaniu swoich aplikacji. Dowiedz się więcej o hostingu Docker CaaS w chmurze.

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"