Docker: Uso de variables de entorno en docker-compose.yml

Esta documentación forma parte de la guía Despliegue con GitHub Actions. Consulte la guía completa aquí: Aprenda a desplegar sus contenedores Docker utilizando GitHub Actions.

Bienvenido a la documentación de Stackhero

Stackhero ofrece una plataforma Docker cloud CaaS (Containers as a Service) lista para usar, diseñada para despliegues de contenedores rápidos y fiables:

  • Despliegue en producción con un simple docker-compose up. No necesita configuración adicional: simplemente inicie sus contenedores.
  • Elija su propio nombre de dominio, asegurado automáticamente con HTTPS (por ejemplo: https://api.su-empresa.com, https://www.su-empresa.com o https://backoffice.su-empresa.com).
  • Disfrute de un alto rendimiento y una seguridad robusta sobre infraestructura privada y dedicada.
  • Aplique actualizaciones con un solo clic para un mantenimiento sencillo y sin complicaciones.

Puede tener sus contenedores en producción en unos cinco minutos. Stackhero gestiona la infraestructura, las actualizaciones y la seguridad por usted, para que pueda centrarse en el desarrollo de sus aplicaciones. Lea más sobre el alojamiento cloud Docker CaaS.

Puede definir variables de entorno en su proyecto de GitHub que estarán disponibles dentro de su archivo docker-compose.yml. Esto es muy útil si desea desplegar en diferentes dominios (por ejemplo, staging.my-company.com para staging y my-company.com para producción).

  1. En GitHub, vaya a Settings > Environments y cree una variable de entorno llamada WEBSITE_DOMAIN.
  2. Para el entorno de staging, establezca WEBSITE_DOMAIN en "staging.my-company.com".
  3. Para el entorno de producción, establezca WEBSITE_DOMAIN en "my-company.com".

A continuación, actualice su archivo .github/workflows/deploy-to-stackhero.yml para pasar la variable WEBSITE_DOMAIN a la acción de Stackhero en GitHub:

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

Ahora, actualice su archivo docker-compose.yml para utilizar la variable WEBSITE_DOMAIN en lugar de un nombre de dominio fijo:

services:
  test:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Utiliza la variable de entorno WEBSITE_DOMAIN como nombre de dominio.
      - "traefik.http.routers.test.tls.certresolver=letsencrypt"