Docker: Omgevingsvariabelen gebruiken in docker-compose.yml

Deze documentatie maakt deel uit van de Deployen met GitHub Actions-gids. Bekijk de volledige gids hier: Leer hoe u uw Docker-containers kunt deployen met GitHub Actions.

👋 Welkom bij de documentatie van Stackhero!

Stackhero biedt een kant-en-klare Docker cloud CaaS (Containers as a Service) oplossing die tal van voordelen biedt, waaronder:

  • Zet eenvoudig uw containers in productie met slechts een docker-compose up.
  • Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://api.uw-bedrijf.com, https://www.uw-bedrijf.com, https://backoffice.uw-bedrijf.com).
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
  • Moeiteloze updates met slechts één klik.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Docker CaaS cloud hosting oplossing van Stackhero te proberen en uw containers in productie te zetten!

U kunt omgevingsvariabelen definiëren in uw GitHub-project die beschikbaar zijn in uw docker-compose.yml-bestand. Dit is erg handig als u wilt deployen naar verschillende domeinen (bijvoorbeeld staging.my-company.com voor staging en my-company.com voor productie).

  1. Ga in GitHub naar Settings > Environments en maak een omgevingsvariabele aan met de naam WEBSITE_DOMAIN.
  2. Stel voor de staging-omgeving WEBSITE_DOMAIN in op "staging.my-company.com".
  3. Stel voor de productie-omgeving WEBSITE_DOMAIN in op "my-company.com".

Werk vervolgens uw .github/workflows/deploy-to-stackhero.yml-bestand bij om de variabele WEBSITE_DOMAIN door te geven aan de 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 }}

Werk nu uw docker-compose.yml-bestand bij om de variabele WEBSITE_DOMAIN te gebruiken in plaats van een hardcoded domeinnaam:

services:
  test:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Gebruikt de omgevingsvariabele WEBSITE_DOMAIN als domeinnaam.
      - "traefik.http.routers.test.tls.certresolver=letsencrypt"