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:

  1. Instala dependências (bun install --force)
  2. Inicia servidor de desenvolvimento (bun --bun run dev --no-fork)
  3. 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

VolumeContainerDados
postgres-datastcall-postgresBanco PostgreSQL
pgadmin-datastcall-pgadminConfiguraçõ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 HostContainerServiço
3000stcall-devFrontend Nuxt
24678stcall-devHMR DevTools
3001stcall-wsWebSocket Server
5432stcall-postgresPostgreSQL
5050stcall-pgadminpgAdmin Web
Copyright © 2026