infra: stack Traefik (Swarm), exemplos de env, CI GitHub Actions e ajuste workspace pnpm
This commit is contained in:
parent
e4db48d8b4
commit
ec1539b446
7 changed files with 255 additions and 1 deletions
77
stack.yml
Normal file
77
stack.yml
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
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 \
|
||||
&& pnpm prisma:generate \
|
||||
&& npx prisma migrate deploy \
|
||||
&& pnpm build \
|
||||
&& pnpm start -p 3000"
|
||||
volumes:
|
||||
- ./:/app
|
||||
- sistema_db:/app/data
|
||||
environment:
|
||||
NODE_ENV: "production"
|
||||
# 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 convex:dev --port 3210 --hostname 0.0.0.0"
|
||||
volumes:
|
||||
- ./:/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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue