Docker: Plataforma de produção
Esta documentação faz parte do guia Node.js. Consulte o guia completo aqui: Como usar e implementar uma aplicação Node.js com Docker.
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.
Se ainda não tiver um serviço Stackhero for Docker, pode criar um facilmente a partir do seu painel Stackhero. Será ativado em aproximadamente 2 minutos.
Se é novo no Stackhero, pode experimentar o alojamento em cloud de contêineres Docker gratuitamente durante um mês.
Preparar o seu primeiro deploy em produção
Antes de implementar a sua aplicação em produção, precisa preparar alguns ficheiros de configuração:
- Copie
secrets/global.production.exampleparasecrets/global.production. - Edite
secrets/global.productione substitua<XXXXXX>.stackhero-network.compelo nome de host do seu serviço Docker a partir do seu painel Stackhero. - Copie
secrets/my-app.production.exampleparasecrets/my-app.production. - Edite
secrets/my-app.productione insira as suas credenciais. - Atualize
docker/docker-compose.production.ymlsubstituindo<XXXXXX>.stackhero-network.compelo nome de host do seu serviço Docker.
Implementar em produção
A implementação em produção é simples: execute:
make production-deploy
Este comando cria um contêiner Docker, transfere os dados do seu projeto e envia-os para o seu serviço Docker em produção. Abra o seu navegador e navegue para o nome de host do seu serviço Docker (por exemplo, https://<XXXXXX>.stackhero-network.com). Deverá ver a sua API REST responder "Hello World".
Também pode usar
make production, que implementa os seus contêineres e exibe logs em tempo real.
Exibir logs
Para monitorizar o seu ambiente de produção ou resolver problemas, pode consultar os seus logs usando estes comandos:
- Para transmitir logs ao vivo, execute:
make production-logs-live - Para recuperar todos os logs armazenados, execute:
make production-logs - Para recuperar logs de um dia específico (substitua
YYYY-MM-DDpela data desejada), execute:make production-logs | grep "YYYY-MM-DD"
Personalizar nomes de domínio
Se desejar usar um nome de domínio diferente de https://<XXXXXX>.stackhero-network.com, o Stackhero for Docker integra o Traefik para simplificar a gestão de domínios. O Traefik lida com o roteamento HTTP e a encriptação TLS (HTTPS) para si.
Aqui estão alguns exemplos para personalizar os seus nomes de domínio:
-
Para servir
api.my-company.comatravés do seu contêinermy-appna porta 5000 com encriptação TLS, atualize o ficheirodocker/docker-compose.production.ymlsubstituindo a seçãolabelspor:labels: - "traefik.enable=true" # Ativar Traefik para rotear o tráfego para este contêiner - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Definir o host - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Usar letsencrypt para certificados TLS - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Especificar a porta 5000 -
Para servir
my-company.comatravés do seu contêinermy-appna porta 5000 e redirecionar todas as solicitações dewww.my-company.comparamy-company.com, atualize a seçãolabelsno mesmo ficheiro com:labels: - "traefik.enable=true" - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Incluir ambos os domínios - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Especificar a porta 5000 # Redirecionar www.my-company.com para my-company.com: - "traefik.http.routers.my-app.middlewares=redirect-www" - "traefik.http.middlewares.redirect-www.redirectregex.regex=^https://www.my-company.com/(.*)" - "traefik.http.middlewares.redirect-www.redirectregex.replacement=https://my-company.com/$${1}" - "traefik.http.middlewares.redirect-www.redirectregex.permanent=true"
Não se esqueça de configurar o DNS para
my-company.comewww.my-company.compara que cada um aponte como um CNAME para o seu serviço Docker emhttps://<XXXXXX>.stackhero-network.com.