From c2c5067c6c26dd4e452503d1cae10e5e19cc7b2f Mon Sep 17 00:00:00 2001 From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:14:19 -0300 Subject: [PATCH] Add temporary production compose without Caddy --- .env.example | 17 +++++++++++++++ DEPLOYMENT.md | 25 ++++++++++++++++++++-- docker-compose.prod.yml | 46 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 .env.example create mode 100644 docker-compose.prod.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1999202 --- /dev/null +++ b/.env.example @@ -0,0 +1,17 @@ +ASPNETCORE_ENVIRONMENT=Production +APP_USE_HTTPS_REDIRECTION=false + +JWT_KEY=troque-por-uma-chave-bem-forte +JWT_ISSUER=LineGestao +JWT_AUDIENCE=LineGestao + +POSTGRES_DB=linegestao +POSTGRES_USER=linegestao_app +POSTGRES_PASSWORD=troque-por-uma-senha-forte + +SEED_ADMIN_EMAIL=admin@linegestao.local +SEED_ADMIN_PASSWORD=troque-por-uma-senha-forte +SEED_ADMIN_NAME=Administrador +SEED_DEFAULT_TENANT_NAME=Default + +FRONTEND_PUBLIC_URL=http://localhost:4200 diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 3d4fde5..b45abdb 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -74,6 +74,27 @@ FRONTEND_PUBLIC_URL=https://seu-dominio.com ## 4) Subir a stack com Docker Compose +### Alternativa A (provisória e mais rápida): sem Caddy, expondo API direto + +Se você ainda não tem acesso ao DNS/domínio no Wix, use o arquivo `docker-compose.prod.yml` deste repositório para publicar só a API (porta `8080`) e o banco. + +```bash +cd ~/apps/line-gestao-api + +docker compose -f docker-compose.prod.yml up -d --build +curl -i http://localhost:8080/health +``` + +Teste externo (do seu PC), trocando pelo IP público do servidor: + +```bash +curl -i http://76.13.231.13:8080/health +``` + +> Se o UFW estiver ativo, libere a porta temporariamente: `sudo ufw allow 8080/tcp`. + +### Stack completa (quando domínio/DNS estiver pronto) + ```bash cd ~/apps/line-gestao-api @@ -95,13 +116,13 @@ docker compose logs -f --tail=200 - API respondendo: ```bash -curl -I http://SEU_SERVIDOR:4000 +curl -I http://SEU_SERVIDOR:8080 ``` - Logs do backend: ```bash -docker compose logs backend --tail=200 +docker compose -f docker-compose.prod.yml logs api --tail=200 ``` - Login admin: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..4c21c3d --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,46 @@ +services: + api: + build: + context: . + dockerfile: Dockerfile + container_name: linegestao-api + restart: unless-stopped + env_file: + - .env + environment: + ASPNETCORE_ENVIRONMENT: ${ASPNETCORE_ENVIRONMENT:-Production} + ASPNETCORE_URLS: http://+:8080 + App__UseHttpsRedirection: ${APP_USE_HTTPS_REDIRECTION:-false} + ConnectionStrings__Default: Host=db;Port=5432;Database=${POSTGRES_DB:-linegestao};Username=${POSTGRES_USER:-linegestao_app};Password=${POSTGRES_PASSWORD:-CHANGE_ME} + Jwt__Issuer: ${JWT_ISSUER:-LineGestao} + Jwt__Audience: ${JWT_AUDIENCE:-LineGestao} + Jwt__Key: ${JWT_KEY:?JWT_KEY is required} + Seed__AdminEmail: ${SEED_ADMIN_EMAIL:-admin@linegestao.local} + Seed__AdminPassword: ${SEED_ADMIN_PASSWORD:-CHANGE_ME} + Seed__AdminName: ${SEED_ADMIN_NAME:-Administrador} + Seed__DefaultTenantName: ${SEED_DEFAULT_TENANT_NAME:-Default} + Cors__AllowedOrigins__0: ${FRONTEND_PUBLIC_URL:-http://localhost:4200} + depends_on: + db: + condition: service_healthy + ports: + - "8080:8080" + + db: + image: postgres:16-alpine + container_name: linegestao-db + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB:-linegestao} + POSTGRES_USER: ${POSTGRES_USER:-linegestao_app} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-CHANGE_ME} + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-linegestao_app} -d ${POSTGRES_DB:-linegestao}"] + interval: 10s + timeout: 5s + retries: 10 + +volumes: + postgres_data: