Docker: Utilizzare variabili d'ambiente in docker-compose.yml
Questa documentazione fa parte della guida Distribuire con GitHub Actions. Consulta la guida completa qui: Scoprite come distribuire i vostri container Docker utilizzando GitHub Actions.
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Docker cloud CaaS (Containers as a Service) pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Distribuisci facilmente i tuoi container in produzione con un semplice
docker-compose up.- Nome di dominio personalizzabile protetto con HTTPS (ad esempio, https://api.tua-azienda.com, https://www.tua-azienda.com, https://backoffice.tua-azienda.com).
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
- Aggiornamenti senza sforzo con un solo clic.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione di hosting cloud Docker CaaS di Stackhero e distribuire i tuoi container in produzione!
Potete definire variabili d'ambiente nel vostro progetto GitHub che saranno accessibili all'interno del file docker-compose.yml. Questo è molto utile se volete distribuire su domini diversi (ad esempio, staging.my-company.com per lo staging e my-company.com per la produzione).
- In GitHub, andate su Settings > Environments e create una variabile d'ambiente chiamata
WEBSITE_DOMAIN. - Per l'ambiente di staging, impostate
WEBSITE_DOMAINsu "staging.my-company.com". - Per l'ambiente di produzione, impostate
WEBSITE_DOMAINsu "my-company.com".
Successivamente, aggiornate il file .github/workflows/deploy-to-stackhero.yml per passare la variabile WEBSITE_DOMAIN all'azione 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 }}
Ora aggiornate il file docker-compose.yml per utilizzare la variabile WEBSITE_DOMAIN invece di un nome di dominio hard-coded:
services:
test:
image: nginx
labels:
- "traefik.enable=true"
- "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Utilizza la variabile d'ambiente WEBSITE_DOMAIN come nome di dominio.
- "traefik.http.routers.test.tls.certresolver=letsencrypt"