Guia para Instalação com Docker

Este guia explica como instalar e configurar o ZPRO Passaporte usando Docker Compose

📋 Pré-requisitos

  • Docker instalado (versão 20.10 ou superior)

  • Docker Compose instalado (versão 2.0 ou superior)

  • Acesso root/sudo (para Linux) ou permissões de administrador (para Windows)

  • Domínio configurado com DNS apontando para o servidor (para produção com SSL)

🚀 Instalação Rápida

  1. Clone o repositório (se ainda não tiver):

cd zpro.io
  1. Configure as variáveis de ambiente (opcional, pode definir no docker-compose.yml):

cp .env.example .env  # Se existir um arquivo .env.example
# Edite o arquivo .env com suas configurações
  1. Construa as imagens e inicie os serviços:

# Opção 1: Build e start em um único comando (recomendado)
docker-compose up -d --build

# Opção 2: Build primeiro, depois start
docker-compose build
docker-compose up -d

⚠️ Importante: Como os serviços backend e frontend precisam ser construídos a partir dos Dockerfiles, é necessário fazer o build das imagens antes de iniciar. Use --build no comando up ou execute build separadamente.

  1. Verifique os logs:

⚙️ Configuração de Portas e Subdomínios

📍 Onde Configurar Portas

As portas são configuradas diretamente no arquivo docker-compose.yml ou através de variáveis de ambiente no arquivo .env.

1. Traefik (Reverse Proxy)

Localização no docker-compose.yml:

Configuração:

  • Porta HTTP: 81 (linha 12 e 18) - Para alterar, modifique ambas as linhas

  • Porta HTTPS: 8443 (linha 13 e 19) - Para alterar, modifique ambas as linhas

  • Dashboard Traefik: 8080 (linha 20) - Interface de gerenciamento do Traefik

2. PostgreSQL (Banco de Dados)

Localização no docker-compose.yml:

Configuração:

  • Porta Externa: Configurada via variável DB_PORT (padrão: 7544)

  • Porta Interna: 5432 (porta padrão do PostgreSQL, não alterar)

  • Para alterar, defina DB_PORT=PORTA_DESEJADA no arquivo .env

3. Backend

Localização no docker-compose.yml:

Configuração:

  • Porta Externa: Configurada via variável PORT (padrão: 7563)

  • Porta Interna: 7563 (porta interna do container, não alterar)

  • Para alterar, defina PORT=PORTA_DESEJADA no arquivo .env

4. Frontend

Localização no docker-compose.yml:

Configuração:

  • Porta Externa: 7564 (porta do host)

  • Porta Interna: 4444 (porta interna do container)

  • Para alterar a porta externa, modifique 7564 na linha 173

🌐 Onde Configurar Subdomínios

Os subdomínios são configurados através de variáveis de ambiente e labels do Traefik no docker-compose.yml.

1. Backend (API)

Localização no docker-compose.yml:

Configuração:

  • Variável: BACKEND_DOMAIN (padrão: dockerapi.comunidadezdg.com.br para HTTPS, api.localhost para HTTP)

  • URL Completa: BACKEND_URL (deve incluir o protocolo https://)

  • Para alterar, defina no arquivo .env:

2. Frontend (Aplicação Web)

Localização no docker-compose.yml:

Configuração:

  • Variável: FRONTEND_DOMAIN (padrão: dockerapp.comunidadezdg.com.br para HTTPS, localhost para HTTP)

  • URL Completa: FRONTEND_URL (deve incluir o protocolo https://)

  • Para alterar, defina no arquivo .env:

3. Dashboard do Traefik

Localização no docker-compose.yml:

Configuração:

  • Variável: TRAEFIK_DASHBOARD_DOMAIN (padrão: traefik.localhost)

  • Para alterar, defina no arquivo .env:

📝 Arquivo .env de Exemplo

Crie um arquivo .env na raiz do projeto com as seguintes variáveis:

🔧 Configuração de DNS

Para que os certificados SSL funcionem corretamente, você precisa configurar os registros DNS:

  1. Registro A ou CNAME apontando para o IP do servidor:

    • api.seudominio.com.br → IP do servidor

    • app.seudominio.com.br → IP do servidor

    • dashboard.seudominio.com.br → IP do servidor (opcional)

  2. Portas abertas no firewall:

    • 81 (HTTP)

    • 8443 (HTTPS)

    • 8080 (Dashboard Traefik - opcional, apenas para acesso interno)

🔐 Certificados SSL

O Traefik está configurado para obter certificados SSL automaticamente via Let's Encrypt usando o desafio TLS.

Configuração no docker-compose.yml:

Para alterar o email:

🎯 Comandos Úteis

Construir as imagens

Iniciar os serviços

Parar os serviços

Ver logs

Reiniciar um serviço específico

Reconstruir as imagens

Verificar status dos containers

Acessar o shell de um container

🔍 Verificação da Instalação

Após iniciar os serviços, verifique:

  1. Backend: Acesse https://SEU_BACKEND_DOMAIN:8443 ou http://SEU_BACKEND_DOMAIN:81

  2. Frontend: Acesse https://SEU_FRONTEND_DOMAIN:8443 ou http://SEU_FRONTEND_DOMAIN:81

  3. Dashboard Traefik: Acesse http://SEU_TRAEFIK_DOMAIN:8080 ou http://SEU_TRAEFIK_DOMAIN:81

  4. PostgreSQL: Conecte-se em localhost:PORTA_DB (padrão: 7544)

⚠️ Troubleshooting

Porta já em uso

Se uma porta estiver em uso, altere a configuração no docker-compose.yml ou no arquivo .env.

Certificado SSL não funciona

  • Verifique se os DNS estão apontando corretamente

  • Certifique-se de que as portas 81 e 8443 estão abertas no firewall

  • Verifique os logs do Traefik: docker-compose logs traefik

Container não inicia

  • Verifique os logs: docker-compose logs [nome-do-servico]

  • Verifique se todas as variáveis de ambiente estão configuradas

  • Certifique-se de que o Docker tem permissões suficientes

Erro de conexão com banco de dados

  • Verifique se o PostgreSQL está rodando: docker-compose ps postgres

  • Verifique as credenciais no arquivo .env

  • Verifique se a porta do banco está acessível

📚 Estrutura do Projeto

🆘 Suporte

Para mais informações ou problemas, consulte a documentação do projeto ou entre em contato com a equipe de suporte. https://suporte.zdg.com.br/arrow-up-right

Atualizado