Docker: Utiliser des variables d'environnement dans docker-compose.yml

Cette documentation fait partie du guide Déployer avec GitHub Actions. Consultez le guide complet ici : Apprenez comment déployer vos conteneurs Docker à l'aide de GitHub Actions.

Bienvenue dans la documentation Stackhero

Stackhero offre une plateforme Docker cloud CaaS (Containers as a Service) prête à l’emploi, conçue pour des déploiements de containers rapides et fiables :

  • Déployez en production avec un simple docker-compose up. Aucune configuration supplémentaire requise : démarrez simplement vos containers.
  • Choisissez votre propre nom de domaine, automatiquement sécurisé avec HTTPS (par exemple : https://api.votre-entreprise.com, https://www.votre-entreprise.com ou https://backoffice.votre-entreprise.com).
  • Profitez de performances élevées et d’une sécurité robuste sur une infrastructure privée et dédiée.
  • Appliquez les mises à jour en un clic pour une maintenance simple et sans tracas.

Vos containers peuvent être en production en environ cinq minutes. Stackhero prend en charge l’infrastructure, les mises à jour et la sécurité pour vous permettre de vous concentrer sur la livraison de vos applications. Pour en savoir plus sur l’hébergement cloud Docker CaaS.

Vous pouvez définir des variables d'environnement dans votre projet GitHub qui seront accessibles dans votre fichier docker-compose.yml. C'est très utile si vous souhaitez déployer sur des domaines différents (par exemple, staging.my-company.com pour le staging et my-company.com pour la production).

  1. Dans GitHub, allez dans Settings > Environments et créez une variable d'environnement nommée WEBSITE_DOMAIN.
  2. Pour l'environnement de staging, définissez WEBSITE_DOMAIN à « staging.my-company.com ».
  3. Pour l'environnement de production, définissez WEBSITE_DOMAIN à « my-company.com ».

Ensuite, mettez à jour votre fichier .github/workflows/deploy-to-stackhero.yml pour transmettre la variable WEBSITE_DOMAIN à l'action GitHub Stackhero :

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

Mettez ensuite à jour votre fichier docker-compose.yml pour utiliser la variable WEBSITE_DOMAIN à la place d'un nom de domaine codé en dur :

services:
  test:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Utilise la variable d'environnement WEBSITE_DOMAIN comme nom de domaine.
      - "traefik.http.routers.test.tls.certresolver=letsencrypt"