- Implementado o workflow GitHub Actions para build e push da imagem do OpenSheets para o Docker Hub. - Criado guia de deploy no Coolify, detalhando opções de uso e configuração. - Atualizados arquivos de configuração do Docker Compose para produção, incluindo serviços e variáveis de ambiente. - Adicionadas instruções para gerenciamento de versões e troubleshooting.
7.5 KiB
Publicação no Docker Hub
Este guia mostra como publicar a imagem do OpenSheets no Docker Hub e usar no Coolify.
🚀 Resumo Rápido
- Configurar secrets no GitHub (DOCKER_USERNAME e DOCKER_PASSWORD)
- Push para main ou criar tag → GitHub Actions publica automaticamente
- No Coolify: usar
docker-compose.prod.ymlapontando para sua imagem do Docker Hub
Opção 1: Publicação Automática (GitHub Actions)
Passo 1: Criar Access Token no Docker Hub
- Acesse Docker Hub
- Faça login na sua conta
- Vá em Account Settings → Security → New Access Token
- Configure:
- Description:
GitHub Actions - OpenSheets - Access permissions:
Read & Write
- Description:
- Clique em Generate e copie o token (você não verá novamente!)
Passo 2: Configurar Secrets no GitHub
- Vá no seu repositório GitHub
- Settings → Secrets and variables → Actions
- Clique em New repository secret
- Adicione 2 secrets:
Secret 1:
- Name:
DOCKER_USERNAME - Value: seu username do Docker Hub (ex:
felipecoutinho)
Secret 2:
- Name:
DOCKER_PASSWORD - Value: o access token copiado acima
Passo 3: Publicar a Imagem
O workflow .github/workflows/docker-publish.yml já está configurado e vai publicar automaticamente quando você:
Opção A: Push para main (cria tag latest)
git add .
git commit -m "feat: nova versão"
git push origin main
Isso vai gerar as tags:
seu-usuario/opensheets:latestseu-usuario/opensheets:mainseu-usuario/opensheets:main-abc123(hash do commit)
Opção B: Criar release com tag semântica (recomendado)
# Criar tag de versão
git tag v1.0.0
git push origin v1.0.0
Isso vai gerar as tags:
seu-usuario/opensheets:latestseu-usuario/opensheets:1.0.0seu-usuario/opensheets:1.0seu-usuario/opensheets:1
Passo 4: Verificar Publicação
- Acesse Docker Hub
- Vá em Repositories
- Você verá
seu-usuario/opensheetscom as tags publicadas
Ou verifique pelo terminal:
docker pull seu-usuario/opensheets:latest
Opção 2: Publicação Manual
Se preferir publicar manualmente sem GitHub Actions:
Passo 1: Login no Docker Hub
docker login
# Digite seu username e password/token
Passo 2: Build da Imagem
# Build com tag do seu usuário
docker build -t seu-usuario/opensheets:latest .
# Opcional: criar tags adicionais
docker tag seu-usuario/opensheets:latest seu-usuario/opensheets:v1.0.0
Passo 3: Push para o Docker Hub
# Enviar a imagem
docker push seu-usuario/opensheets:latest
# Se criou tags adicionais
docker push seu-usuario/opensheets:v1.0.0
Passo 4: Verificar
docker pull seu-usuario/opensheets:latest
Usando no Coolify
Opção A: Docker Compose Production (Recomendado)
-
No Coolify:
- Projects → + New Resource → Docker Compose Empty
- Conecte ao repositório
- Docker Compose Location:
docker-compose.prod.yml
-
Configure variáveis de ambiente:
# Configuração da imagem do Docker Hub DOCKER_USERNAME=seu-usuario IMAGE_TAG=latest # PostgreSQL POSTGRES_USER=opensheets POSTGRES_PASSWORD=SENHA_FORTE_AQUI POSTGRES_DB=opensheets_db DATABASE_URL=postgresql://opensheets:SENHA_FORTE_AQUI@db:5432/opensheets_db # Better Auth BETTER_AUTH_SECRET=GERAR_COM_OPENSSL BETTER_AUTH_URL=https://seu-dominio.com -
Deploy
- Clique em Deploy
- O Coolify vai fazer pull da imagem do Docker Hub (não build!)
- Muito mais rápido! ⚡
Opção B: Editar docker-compose.prod.yml antes
Você pode editar o arquivo e fixar sua imagem:
app:
image: felipecoutinho/opensheets:latest # Seu usuário aqui
# ... resto da configuração
Depois fazer commit e push. No Coolify vai usar direto a imagem configurada.
Vantagens de Usar Imagem do Docker Hub
✅ Deploy mais rápido - Apenas pull da imagem (segundos) vs build completo (minutos) ✅ Mesma imagem em múltiplos ambientes - Staging, produção, testes ✅ Rollback fácil - Trocar tag da imagem para versão anterior ✅ CI/CD automatizado - Push no GitHub → build automático → disponível no hub ✅ Multi-arch - Suporte para AMD64 e ARM64 (servidores diferentes)
Gestão de Versões
Estratégia Recomendada
# Desenvolvimento contínuo
main branch → seu-usuario/opensheets:latest
# Releases estáveis
v1.0.0 → seu-usuario/opensheets:1.0.0
v1.1.0 → seu-usuario/opensheets:1.1.0
v2.0.0 → seu-usuario/opensheets:2.0.0
Exemplo de Workflow Completo
# 1. Desenvolver feature
git checkout -b feature/nova-funcionalidade
# ... fazer alterações ...
git add .
git commit -m "feat: adiciona nova funcionalidade"
# 2. Merge para main
git checkout main
git merge feature/nova-funcionalidade
git push origin main
# → GitHub Actions publica seu-usuario/opensheets:latest
# 3. Criar release quando estável
git tag v1.1.0
git push origin v1.1.0
# → GitHub Actions publica:
# - seu-usuario/opensheets:1.1.0
# - seu-usuario/opensheets:1.1
# - seu-usuario/opensheets:1
# - seu-usuario/opensheets:latest
No Coolify: Controle de Versões
# Usar sempre a última versão (auto-update)
IMAGE_TAG=latest
# Fixar versão específica (produção estável)
IMAGE_TAG=1.0.0
# Usar versão minor mais recente
IMAGE_TAG=1.1
Troubleshooting
Erro: "unauthorized: authentication required"
Causa: Secrets não configurados ou token inválido
Solução:
- Verifique se DOCKER_USERNAME e DOCKER_PASSWORD estão nos secrets do GitHub
- Gere um novo access token no Docker Hub
- Atualize o secret DOCKER_PASSWORD
Erro: "denied: requested access to the resource is denied"
Causa: Username incorreto ou permissões insuficientes
Solução:
- Verifique se DOCKER_USERNAME está correto (lowercase)
- Certifique-se que o access token tem permissão "Read & Write"
Build demora muito no GitHub Actions
Causa: Cache não está funcionando
Solução:
- O workflow já usa cache (buildx cache)
- Espere o primeiro build (demora mais)
- Builds seguintes serão mais rápidos
Coolify não encontra a imagem
Causa: Variável DOCKER_USERNAME não configurada ou imagem não existe
Solução:
- Verifique se a imagem existe no Docker Hub
- Configure DOCKER_USERNAME no Coolify
- Tente fazer pull manual:
docker pull seu-usuario/opensheets:latest
Limpeza de Imagens Antigas
No Docker Hub (free tier tem limite de 1 repositório privado):
- Vá em Repositories →
opensheets→ Tags - Delete tags antigas que não usa mais
- Mantenha:
latest, versões estáveis importantes
Ou use Docker Hub CLI:
# Instalar hub-tool
brew install docker/hub-tool/hub-tool # macOS
# Listar tags
hub-tool tag ls seu-usuario/opensheets
# Deletar tag
hub-tool tag rm seu-usuario/opensheets:old-tag
Recursos
Próximos Passos
Depois de configurar:
- ✅ Push código para GitHub → imagem publicada automaticamente
- ✅ No Coolify, usar
docker-compose.prod.yml - ✅ Deploy super rápido (apenas pull da imagem)
- ✅ Criar releases com tags quando tiver versões estáveis