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).
- W GitHub przejdź do Settings > Environments i utwórz zmienną środowiskową o nazwie
WEBSITE_DOMAIN. - Dla środowiska staging ustaw
WEBSITE_DOMAINna "staging.my-company.com". - Dla środowiska produkcyjnego ustaw
WEBSITE_DOMAINna "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"