Infraestrutura base centralizada em Docker para roteamento (Traefik), banco de dados (PostgreSQL) e documentação interna.
Se você estiver utilizando a nuvem (proxy) do Cloudflare para seus domínios apontados para a infraestrutura, você DEVE acessar o painel do domínio no Cloudflare, ir no menu SSL/TLS e alterar o modo de encriptação de "Flexible" para "Full" ou "Full (strict)".
O modo Flexible causará um erro instantâneo de ERR_TOO_MANY_REDIRECTS (Loop de
Redirecionamento Infinito) e a página não vai carregar. Isso acontece porque o Traefik bloqueia o acesso
HTTP simples devolvido pelo Cloudflare, exigindo HTTPS de ponta-a-ponta.
Para criar um banco de dados e usuário exclusivos para um novo projeto, utilize o script
novo-banco.sh no servidor host, de dentro da pasta infra_infinity:
# Como executar:
./novo-banco.sh nome_do_projeto
# Exemplo prático:
./novo-banco.sh my_awesome_app
O script gerará uma senha blindada automaticamente e criará os acessos. O host que seus projetos utilizarão dentro da rede compartilhada é postgres_infinity na porta 5432.
Para integrar e expor futuros projetos através da INFRA_INFINITY, o docker-compose.yml do seu
projeto DEVE entrar na rede infinity_net e usar as seguintes labels (não
mapeie portas diretamente para o host!):
version: '3.8'
services:
meuprojeto:
image: minhaimagem:v1
networks:
- infinity_net
# A configuração do Traefik é inteiramente via labels:
labels:
- "traefik.enable=true"
# Altere 'meuprojeto' pelo nome único do seu app e aponte para seu domínio
- "traefik.http.routers.meuprojeto.rule=Host(`meuprojeto.softwareinfinity.com`)"
- "traefik.http.routers.meuprojeto.entrypoints=websecure"
- "traefik.http.routers.meuprojeto.tls.certresolver=myresolver"
# Redirecionamento forçado de HTTP para HTTPS:
- "traefik.http.routers.meuprojeto-http.rule=Host(`meuprojeto.softwareinfinity.com`)"
- "traefik.http.routers.meuprojeto-http.entrypoints=web"
- "traefik.http.routers.meuprojeto-http.middlewares=redirect-to-https"
# Descomente a linha abaixo caso o serviço exponha várias portas internamente:
# - "traefik.http.services.meuprojeto.loadbalancer.server.port=8080"
networks:
infinity_net:
external: true