mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-03-10 04:51:47 +00:00
- 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.
304 lines
7.5 KiB
Markdown
304 lines
7.5 KiB
Markdown
# Publicação no Docker Hub
|
|
|
|
Este guia mostra como publicar a imagem do OpenSheets no Docker Hub e usar no Coolify.
|
|
|
|
## 🚀 Resumo Rápido
|
|
|
|
1. **Configurar secrets no GitHub** (DOCKER_USERNAME e DOCKER_PASSWORD)
|
|
2. **Push para main ou criar tag** → GitHub Actions publica automaticamente
|
|
3. **No Coolify:** usar `docker-compose.prod.yml` apontando para sua imagem do Docker Hub
|
|
|
|
---
|
|
|
|
## Opção 1: Publicação Automática (GitHub Actions)
|
|
|
|
### Passo 1: Criar Access Token no Docker Hub
|
|
|
|
1. Acesse [Docker Hub](https://hub.docker.com/)
|
|
2. Faça login na sua conta
|
|
3. Vá em **Account Settings** → **Security** → **New Access Token**
|
|
4. Configure:
|
|
- **Description**: `GitHub Actions - OpenSheets`
|
|
- **Access permissions**: `Read & Write`
|
|
5. Clique em **Generate** e **copie o token** (você não verá novamente!)
|
|
|
|
### Passo 2: Configurar Secrets no GitHub
|
|
|
|
1. Vá no seu repositório GitHub
|
|
2. **Settings** → **Secrets and variables** → **Actions**
|
|
3. Clique em **New repository secret**
|
|
4. 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`)
|
|
```bash
|
|
git add .
|
|
git commit -m "feat: nova versão"
|
|
git push origin main
|
|
```
|
|
|
|
Isso vai gerar as tags:
|
|
- `seu-usuario/opensheets:latest`
|
|
- `seu-usuario/opensheets:main`
|
|
- `seu-usuario/opensheets:main-abc123` (hash do commit)
|
|
|
|
#### Opção B: Criar release com tag semântica (recomendado)
|
|
```bash
|
|
# Criar tag de versão
|
|
git tag v1.0.0
|
|
git push origin v1.0.0
|
|
```
|
|
|
|
Isso vai gerar as tags:
|
|
- `seu-usuario/opensheets:latest`
|
|
- `seu-usuario/opensheets:1.0.0`
|
|
- `seu-usuario/opensheets:1.0`
|
|
- `seu-usuario/opensheets:1`
|
|
|
|
### Passo 4: Verificar Publicação
|
|
|
|
1. Acesse [Docker Hub](https://hub.docker.com/)
|
|
2. Vá em **Repositories**
|
|
3. Você verá `seu-usuario/opensheets` com as tags publicadas
|
|
|
|
Ou verifique pelo terminal:
|
|
```bash
|
|
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
|
|
```bash
|
|
docker login
|
|
# Digite seu username e password/token
|
|
```
|
|
|
|
### Passo 2: Build da Imagem
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Enviar a imagem
|
|
docker push seu-usuario/opensheets:latest
|
|
|
|
# Se criou tags adicionais
|
|
docker push seu-usuario/opensheets:v1.0.0
|
|
```
|
|
|
|
### Passo 4: Verificar
|
|
```bash
|
|
docker pull seu-usuario/opensheets:latest
|
|
```
|
|
|
|
---
|
|
|
|
## Usando no Coolify
|
|
|
|
### Opção A: Docker Compose Production (Recomendado)
|
|
|
|
1. **No Coolify:**
|
|
- Projects → + New Resource → **Docker Compose Empty**
|
|
- Conecte ao repositório
|
|
- **Docker Compose Location**: `docker-compose.prod.yml`
|
|
|
|
2. **Configure variáveis de ambiente:**
|
|
```bash
|
|
# 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
|
|
```
|
|
|
|
3. **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:
|
|
|
|
```yaml
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:**
|
|
1. Verifique se DOCKER_USERNAME e DOCKER_PASSWORD estão nos secrets do GitHub
|
|
2. Gere um novo access token no Docker Hub
|
|
3. Atualize o secret DOCKER_PASSWORD
|
|
|
|
### Erro: "denied: requested access to the resource is denied"
|
|
|
|
**Causa:** Username incorreto ou permissões insuficientes
|
|
|
|
**Solução:**
|
|
1. Verifique se DOCKER_USERNAME está correto (lowercase)
|
|
2. 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:**
|
|
1. Verifique se a imagem existe no Docker Hub
|
|
2. Configure DOCKER_USERNAME no Coolify
|
|
3. 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):
|
|
|
|
1. Vá em **Repositories** → `opensheets` → **Tags**
|
|
2. Delete tags antigas que não usa mais
|
|
3. Mantenha: `latest`, versões estáveis importantes
|
|
|
|
Ou use Docker Hub CLI:
|
|
```bash
|
|
# 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
|
|
|
|
- [Docker Hub](https://hub.docker.com/)
|
|
- [GitHub Actions - Docker](https://docs.github.com/en/actions/publishing-packages/publishing-docker-images)
|
|
- [Docker Build Push Action](https://github.com/docker/build-push-action)
|
|
- [Semantic Versioning](https://semver.org/)
|
|
|
|
---
|
|
|
|
## Próximos Passos
|
|
|
|
Depois de configurar:
|
|
|
|
1. ✅ Push código para GitHub → imagem publicada automaticamente
|
|
2. ✅ No Coolify, usar `docker-compose.prod.yml`
|
|
3. ✅ Deploy super rápido (apenas pull da imagem)
|
|
4. ✅ Criar releases com tags quando tiver versões estáveis
|