Atualização
Este guia explica como atualizar o PCH-SIG para uma nova versão.
Preparação
Verificar a versão atual
# Versão backend
docker exec pch_backend php bin/console --version
# Versão frontend (em package.json)
cat frontend/package.json | grep version
Fazer backup antes da atualização
Importante
Sempre faça um backup completo antes de qualquer atualização.
# Backup rápido
docker exec pch_postgres pg_dump -U pch_admin pch_sig > backup_antes_atualizacao.sql
Atualização do Frontend
Etapa 1: Obter as modificações
cd frontend
# Obter as últimas modificações
git pull origin main
# Instalar as novas dependências
npm install
Etapa 2: Build de produção
npm run build
Etapa 3: Implantar no servidor
# Criar a sessão PowerShell
$cred = Get-Credential
$session = New-PSSession -ComputerName serveur-production -Credential $cred
# Copiar o build
Copy-Item -Path ".\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force
# Reiniciar o contêiner
Invoke-Command -Session $session -ScriptBlock {
docker-machine ssh default "docker restart pch_frontend"
}
Remove-PSSession $session
Etapa 4: Atualizar o Service Worker
Incrementar a versão do cache em frontend/public/service-worker.js:
// Antes
const CACHE_NAME = 'pch-sig-cache-v2';
// Depois
const CACHE_NAME = 'pch-sig-cache-v3';
Atualização do Backend
Etapa 1: Obter as modificações
cd backend
# Obter as últimas modificações
git pull origin main
# Instalar as dependências
composer install --no-dev --optimize-autoloader
Etapa 2: Executar as migrações
# Verificar as migrações pendentes
php bin/console doctrine:migrations:status
# Executar as migrações
php bin/console doctrine:migrations:migrate --no-interaction
Etapa 3: Limpar o cache
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
Etapa 4: Implantar no servidor
# Copiar os arquivos backend
Copy-Item -Path ".\src\*" -Destination "C:\pch-sig\backend\src" -ToSession $session -Recurse -Force
Copy-Item -Path ".\config\*" -Destination "C:\pch-sig\backend\config" -ToSession $session -Recurse -Force
# Executar as migrações no servidor
Invoke-Command -Session $session -ScriptBlock {
docker exec pch_backend php bin/console doctrine:migrations:migrate --no-interaction
docker exec pch_backend php bin/console cache:clear --env=prod
}
Atualização dos Contêineres Docker
Atualizar as imagens
cd deploy
# Baixar as novas imagens
docker compose pull
# Reiniciar com as novas imagens
docker compose up -d
Reconstruir uma imagem personalizada
Se você modificou um Dockerfile:
# Reconstruir a imagem backend
docker compose build backend
# Reiniciar o contêiner
docker compose up -d backend
Gestão das Migrações de Banco de Dados
Verificar o estado das migrações
docker exec pch_backend php bin/console doctrine:migrations:status
Criar uma nova migração
docker exec pch_backend php bin/console make:migration
Reverter a última migração
docker exec pch_backend php bin/console doctrine:migrations:migrate prev
Executar uma migração específica
docker exec pch_backend php bin/console doctrine:migrations:execute 'DoctrineMigrations\Version20240115120000' --up
Rollback em caso de problema
Restaurar o frontend
# Os backups estão em C:\pch-sig\backups\
Copy-Item -Path "C:\pch-sig\backups\frontend-YYYYMMDD\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force
docker restart pch_frontend
Restaurar o backend
# Voltar para a versão anterior do código
git checkout HEAD~1
# Reverter as migrações
docker exec pch_backend php bin/console doctrine:migrations:migrate prev
Restaurar o banco de dados
# Restaurar a partir do backup
docker exec -i pch_postgres psql -U pch_admin -d pch_sig < backup_antes_atualizacao.sql
Atualizações maiores
Mudança de versão PHP
- Atualizar a imagem em
docker-compose.yml - Verificar a compatibilidade das dependências Composer
- Testar em ambiente de desenvolvimento
- Implantar em produção
Mudança de versão PostgreSQL
- Exportar todos os dados
- Parar o contêiner antigo
- Atualizar a imagem
- Restaurar os dados
# Export completo
docker exec pch_postgres pg_dumpall -U pch_admin > full_backup.sql
# Atualizar e restaurar
docker compose down postgres
# Modificar a versão em docker-compose.yml
docker compose up -d postgres
docker exec -i pch_postgres psql -U pch_admin < full_backup.sql
Checklist de atualização
- Fazer backup do banco de dados
- Fazer backup dos arquivos de configuração
- Anotar a versão atual
- Obter as modificações (git pull)
- Instalar as dependências
- Executar as migrações
- Limpar o cache
- Implantar no servidor
- Testar a aplicação
- Atualizar a versão do Service Worker
- Informar os usuários