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 : Découvrez comment déployer vos conteneurs Docker avec GitHub Actions.

Bienvenue sur la documentation de Stackhero

Stackhero propose 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 une simple commande docker-compose up. Aucune configuration supplémentaire n'est nécessaire : lancez simplement vos containers.
  • Choisissez votre propre nom de domaine, automatiquement sécurisé en HTTPS (par exemple : https://api.votre-entreprise.com, https://www.votre-entreprise.com ou https://backoffice.votre-entreprise.com).
  • Profitez de hautes performances et d'une sécurité renforcée sur une infrastructure privée et dédiée.
  • Appliquez les mises à jour en un clic pour une maintenance simple et sans effort.

Vos containers peuvent être en production en environ cinq minutes. Stackhero gère pour vous l'infrastructure, les mises à jour et la sécurité, afin que vous puissiez vous concentrer sur le développement de vos applications. Découvrez-en 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 sur "staging.my-company.com".
  3. Pour l'environnement de production, définissez WEBSITE_DOMAIN sur "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 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"