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 sur la documentation de Stackhero !
Stackhero propose une solution Docker cloud CaaS (Containers as a Service) prête à l'emploi offrant de nombreux avantages, notamment :
- Déployez facilement vos containers en production avec un simple
docker-compose up.- Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://api.votre-entreprise.com, https://www.votre-entreprise.com, https://backoffice.votre-entreprise.com).
- Performance optimale et sécurité robuste grâce à une VM privée et dédiée.
- Mises à jour simplifiées en un clic.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution d'hébergement cloud Docker CaaS de Stackhero et déployer vos containers en production !
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).
- Dans GitHub, allez dans Settings > Environments et créez une variable d'environnement nommée
WEBSITE_DOMAIN. - Pour l'environnement de staging, définissez
WEBSITE_DOMAINà « staging.my-company.com ». - 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"