feat: configure backend dev deployment workflow

This commit is contained in:
Tiago Yamamoto 2025-12-27 22:54:37 -03:00
parent bb24725f36
commit 1b518aa468
2 changed files with 112 additions and 0 deletions

39
.github/workflows/deploy.yaml vendored Normal file
View file

@ -0,0 +1,39 @@
name: Deploy Backend (Dev)
on:
push:
branches:
- dev # O deploy só será disparado quando você enviar código para a branch 'dev'
paths:
- 'backend/**' # O deploy só dispara se houver mudança especificamente na pasta do backend
jobs:
deploy-backend-dev:
runs-on: ubuntu-latest
steps:
- name: Executar Deploy via SSH na Apolo (Ambiente Dev)
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.PORT || 22 }}
script: |
# 1. Navega até a pasta onde está o código
cd /mnt/data/gohorsejobs
# 2. Garante que está na branch dev e atualiza o código
git fetch origin
git checkout dev
git pull origin dev
# 3. Build isolado da imagem do backend
# O comando aponta para a subpasta './backend' conforme sua estrutura de arquivos
podman build -t gohorsejobs-backend-dev ./backend
# 4. Reinicia o serviço específico de desenvolvimento
# Recomendado ter um serviço/container separado para dev (ex: gohorsejobs-backend-dev)
sudo systemctl restart gohorsejobs-backend-dev
# 5. Limpeza de imagens antigas
podman image prune -f

73
docker-compose.yml Normal file
View file

@ -0,0 +1,73 @@
version: '3.8'
services:
backend:
build:
context: ./backend
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
- DB_HOST=db
- DB_PORT=5432
- DB_USER=${DB_USER:-postgres}
- DB_PASSWORD=${DB_PASSWORD:-postgres}
- DB_NAME=${DB_NAME:-gohorsejobs}
- JWT_SECRET=${JWT_SECRET:-secret}
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:3000}
depends_on:
- db
restart: unless-stopped
networks:
- app-network
backoffice:
build:
context: ./backoffice
dockerfile: Dockerfile
ports:
- "3001:3001"
environment:
- DB_HOST=db
- DB_PORT=5432
- DB_USERNAME=${DB_USER:-postgres}
- DB_PASSWORD=${DB_PASSWORD:-postgres}
- DB_DATABASE=${DB_NAME:-gohorsejobs}
- JWT_SECRET=${JWT_SECRET:-secret}
depends_on:
- db
restart: unless-stopped
networks:
- app-network
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
args:
- NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://localhost:8080}
ports:
- "3000:3000"
depends_on:
- backend
restart: unless-stopped
networks:
- app-network
db:
image: postgres:15-alpine
environment:
- POSTGRES_USER=${DB_USER:-postgres}
- POSTGRES_PASSWORD=${DB_PASSWORD:-postgres}
- POSTGRES_DB=${DB_NAME:-gohorsejobs}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- app-network
volumes:
postgres_data:
networks:
app-network:
driver: bridge