Ambiente Local
Docker Local
Configuração Docker para desenvolvimento local do stCall.
Docker Local
Cada componente do stCall tem seu próprio docker-compose.yml para desenvolvimento local.
Containers
Frontend (stCall)
# stCall/docker-compose.yml
services:
nuxt-app:
build:
context: .
dockerfile: Dockerfile
container_name: stcall-dev
ports:
- "3000:3000" # Aplicação
- "24678:24678" # DevTools HMR
volumes:
- .:/app # Mount do código fonte
env_file:
- .env
command: sh -c "bun install --force && bun --bun run dev --no-fork"
stdin_open: true
tty: true
Imagem base: oven/bun:1-alpine
O container:
- Instala dependências (
bun install --force) - Inicia servidor de desenvolvimento (
bun --bun run dev --no-fork) - O código fonte é montado via volume (alterações refletidas em tempo real)
WebSocket Server + PostgreSQL
# websockets-stcall/docker-compose.yml
services:
ws-container:
build:
context: .
dockerfile: Dockerfile
container_name: stcall-ws
ports:
- "3001:3001"
env_file:
- .env
networks:
- stcall-network
depends_on:
- postgres
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: stcall-postgres
ports:
- "5432:5432"
env_file:
- .env
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- stcall-network
pgadmin:
image: dpage/pgadmin4:latest
container_name: stcall-pgadmin
env_file:
- .env
ports:
- "5050:80"
volumes:
- pgadmin-data:/var/lib/pgadmin
networks:
- stcall-network
depends_on:
- postgres
networks:
stcall-network:
driver: bridge
volumes:
postgres-data:
driver: local
pgadmin-data:
driver: local
Comandos Docker
Iniciar
# WebSocket Server (background)
cd websockets-stcall
docker compose up --build -d
# Frontend (foreground, para ver logs)
cd stCall
docker compose up --build
Parar
docker compose down # Parar containers
docker compose down -v # Parar e remover volumes (dados do banco)
Logs
docker compose logs -f # Todos os containers
docker compose logs -f ws-container # Apenas WebSocket
docker compose logs -f postgres # Apenas PostgreSQL
Rebuild
docker compose build --no-cache # Forçar rebuild da imagem
docker compose up --build # Build + iniciar
Prisma no Docker
Os clientes Prisma são gerados no build do container (Dockerfile):
COPY prisma ./prisma
RUN bunx prisma generate --schema=./prisma/schema.prisma
RUN bunx prisma generate --schema=./prisma/schema-stcall.prisma
Migrações são executadas no startup:
CMD ["sh", "-c", "bunx prisma migrate deploy --config=./prisma-freepbx.config.ts && bunx prisma migrate deploy --config=./prisma.config.ts && bun run src/server.ts"]
Se alterar schemas Prisma, é necessário rebuildar a imagem Docker para regenerar os clientes.
Volumes Persistentes
| Volume | Container | Dados |
|---|---|---|
postgres-data | stcall-postgres | Banco PostgreSQL |
pgadmin-data | stcall-pgadmin | Configurações pgAdmin |
Os dados do PostgreSQL sobrevivem a restarts do container. Use docker compose down -v para limpar.
Rede
Os containers do websockets-stcall compartilham a rede stcall-network. O frontend se conecta ao WebSocket server via localhost:3001.
DNS externo (8.8.8.8) é configurado no ws-container para acessar o FreePBX remoto.
Mapa de Portas
| Porta Host | Container | Serviço |
|---|---|---|
| 3000 | stcall-dev | Frontend Nuxt |
| 24678 | stcall-dev | HMR DevTools |
| 3001 | stcall-ws | WebSocket Server |
| 5432 | stcall-postgres | PostgreSQL |
| 5050 | stcall-pgadmin | pgAdmin Web |