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 \ && pnpm convex:dev --port 3210 --hostname 0.0.0.0" volumes: - /srv/apps/sistema:/app - convex_data:/root/.convex env_file: - /srv/apps/sistema/.env 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