Docker: Utilizar variáveis de ambiente no docker-compose.yml
Esta documentação faz parte do guia Implementar com GitHub Actions. Consulte o guia completo aqui: Saiba como implementar os seus contentores Docker utilizando o GitHub Actions.
Bem-vindo à documentação da Stackhero
A Stackhero disponibiliza uma plataforma Docker cloud CaaS (Containers as a Service) pronta a usar, concebida para implementações de contentores rápidas e fiáveis:
- Implemente em produção com um simples
docker-compose up. Não é necessária qualquer configuração adicional: basta iniciar os seus contentores.- Escolha o seu próprio nome de domínio, automaticamente protegido com HTTPS (por exemplo: https://api.sua-empresa.com, https://www.sua-empresa.com ou https://backoffice.sua-empresa.com).
- Beneficie de elevado desempenho e segurança robusta numa infraestrutura privada e dedicada.
- Aplique atualizações com um clique para uma manutenção simples e sem esforço.
Pode ter os seus contentores em produção em cerca de cinco minutos. A Stackhero gere a infraestrutura, as atualizações e a segurança por si, para que se possa focar na entrega das suas aplicações. Saiba mais sobre alojamento cloud Docker CaaS.
Pode definir variáveis de ambiente no seu projeto GitHub que estarão acessíveis dentro do seu ficheiro docker-compose.yml. Isto é muito útil se quiser implementar em domínios diferentes (por exemplo, staging.my-company.com para staging e my-company.com para produção).
- No GitHub, vá a Settings > Environments e crie uma variável de ambiente chamada
WEBSITE_DOMAIN. - Para o ambiente de staging, defina
WEBSITE_DOMAINcomo "staging.my-company.com". - Para o ambiente de produção, defina
WEBSITE_DOMAINcomo "my-company.com".
De seguida, atualize o seu ficheiro .github/workflows/deploy-to-stackhero.yml para passar a variável WEBSITE_DOMAIN para a ação GitHub da 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 }}
Agora, atualize o seu ficheiro docker-compose.yml para utilizar a variável WEBSITE_DOMAIN em vez de um nome de domínio fixo:
services:
test:
image: nginx
labels:
- "traefik.enable=true"
- "traefik.http.routers.test.rule=Host(`${WEBSITE_DOMAIN}`)" # Utiliza a variável de ambiente WEBSITE_DOMAIN como nome de domínio.
- "traefik.http.routers.test.tls.certresolver=letsencrypt"