sistema-de-chamados/stack.yml

78 lines
2.4 KiB
YAML

version: "3.8"
services:
web:
image: node:20-bullseye
working_dir: /app
command: >
bash -lc "corepack enable \
&& corepack prepare pnpm@9 --activate \
&& pnpm install --frozen-lockfile --prod=false \
&& pnpm prisma:generate \
&& pnpm exec prisma migrate deploy \
&& pnpm build \
&& pnpm start -p 3000"
volumes:
- /srv/apps/sistema:/app
- sistema_db:/app/data
environment:
NODE_ENV: "production"
# Garante instalação de devDependencies para o build (prisma CLI)
NPM_CONFIG_PRODUCTION: "false"
# Mantém o SQLite fora do repositório
DATABASE_URL: "file:/app/data/db.sqlite"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.docker.network=traefik_public
- traefik.http.routers.sistema_web.rule=Host(`tickets.esdrasrenan.com.br`)
- traefik.http.routers.sistema_web.entrypoints=websecure
- traefik.http.routers.sistema_web.tls=true
- traefik.http.routers.sistema_web.tls.certresolver=le
- traefik.http.services.sistema_web.loadbalancer.server.port=3000
networks:
- traefik_public
convex:
image: node:20-bullseye
working_dir: /app
command: >
bash -lc "corepack enable \
&& corepack prepare pnpm@9 --activate \
&& pnpm install --frozen-lockfile \
&& set -a && . ./.env && set +a \
&& pnpm exec convex dev --configure new --project sistema-de-chamados --dev-deployment local"
volumes:
- /srv/apps/sistema:/app
- convex_data:/root/.convex
environment:
NODE_ENV: "production"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.docker.network=traefik_public
- traefik.http.routers.sistema_convex.rule=Host(`convex.esdrasrenan.com.br`)
- traefik.http.routers.sistema_convex.entrypoints=websecure
- traefik.http.routers.sistema_convex.tls=true
- traefik.http.routers.sistema_convex.tls.certresolver=le
- traefik.http.services.sistema_convex.loadbalancer.server.port=3210
networks:
- traefik_public
volumes:
sistema_db:
convex_data:
networks:
traefik_public:
external: true