Skip to content

fix: corrigir Dockerfile e melhorar limpeza de imagens #4

fix: corrigir Dockerfile e melhorar limpeza de imagens

fix: corrigir Dockerfile e melhorar limpeza de imagens #4

name: Deploy Docs to VPS
# Workflow para deploy automatizado da documentação na VPS
on:
workflow_dispatch: # Disparado manualmente
push:
branches:
- main
paths:
- 'docs/**'
- 'deployment/**'
- '.github/workflows/deploy-docs-vps.yml'
workflow_run:
workflows: ["Publish to Maven Central"]
types:
- completed
branches: [main]
jobs:
deploy:
runs-on: self-hosted
# Só roda se não for uma tag (para não duplicar em releases)
if: |
contains(github.event.head_commit.message, '[skip deploy]') == false ||
github.event_name == 'workflow_dispatch' ||
github.event_name == 'workflow_run'
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Checkout documentation
uses: actions/checkout@v4
with:
repository: edsonmartins/archbase-app-documentation
path: docs-site
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
working-directory: ./docs-site
run: pnpm install --frozen-lockfile
- name: Build docs
working-directory: ./docs-site
run: |
export NODE_OPTIONS=--max_old_space_size=8192
pnpm run build
- name: Prepare Docker build context
run: |
# Criar diretório temporário para o build
mkdir -p docker-build-context
# Copiar arquivos buildados
cp -r docs-site/build/* docker-build-context/
# Copiar nginx.conf
cp deployment/docs/nginx.conf docker-build-context/
- name: Build Docker image
run: |
# Build da imagem (sem timestamp para não acumular tags)
docker build \
-t archbase-java-docs:latest \
-f deployment/docs/Dockerfile \
docker-build-context
- name: Deploy to Docker Swarm
run: |
# Copiar docker-compose para local persistente
sudo mkdir -p /opt/archbase-infrastructure
sudo cp deployment/docker-compose.vps.yml /opt/archbase-infrastructure/docker-compose.yml
# Recrear stack com nova versão (Docker Swarm)
cd /opt/archbase-infrastructure
docker stack deploy -c docker-compose.yml archbase-java
# Forçar atualização do serviço
docker service update archbase-java_frontend --force
- name: Cleanup old Docker images
run: |
# Remover todas as tags antigas de archbase-java-docs (exceto latest)
docker images archbase-java-docs --format "{{.Tag}}" | \
grep -E "^[0-9]+$" | \
xargs -I {} docker rmi archbase-java-docs:{} 2>/dev/null || true
- name: Docker system prune
run: |
# Remover imagens dangling, containers parados e cache de build
docker image prune -a -f
docker container prune -f
docker system prune -f
# Exibir uso de disco após limpeza
echo "=== Uso de disco após limpeza ==="
df -h /var/lib/docker
echo "=== Imagens restantes ==="
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"