annator-command-center / docker-configs /docker-compose.local.yml
techprotrade's picture
Deploy ATOM FastAPI command center runtime (part 5)
90c6b42 verified
Raw
History Blame Contribute Delete
4.07 kB
version: '3.8'
services:
# Local PostgreSQL for development
postgres-local:
image: postgres:15-alpine
container_name: atom-postgres-local
environment:
POSTGRES_DB: ${POSTGRES_DB:-atom_local}
POSTGRES_USER: ${POSTGRES_USER:-atom_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-local_password}
ports:
- "${POSTGRES_PORT:-5432}:5432"
volumes:
- postgres_local_data:/var/lib/postgresql/data
+ - ./init-test-db.sql:/docker-entrypoint-initdb.d/init.sql:ro
+ profiles:
+ - local
+ networks:
+ - atom-local-net
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-atom_user} -d ${POSTGRES_DB:-atom_local}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+ labels:
+ - "atom.environment=local"
+ - "atom.service=database"
+ # Local Redis for caching
+ redis-local:
+ image: redis:7-alpine
+ container_name: atom-redis-local
+ ports:
+ - "${REDIS_PORT:-6379}:6379"
+ volumes:
+ - redis_local_data:/data
+ profiles:
+ - local
+ networks:
+ - atom-local-net
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ interval: 10s
+ timeout: 5s
+ retries: 3
+ labels:
+ - "atom.environment=local"
+ - "atom.service=cache"
+ # Development server with hot reload
+ app-dev:
+ build:
+ context: .
+ dockerfile: Dockerfile.dev
+ container_name: atom-app-dev
+ ports:
+ - "${PORT:-3000}:3000"
+ environment:
+ NODE_ENV: development
+ POSTGRES_HOST: postgres-local
+ POSTGRES_PORT: 5432
+ POSTGRES_DB: ${POSTGRES_DB:-atom_local}
+ POSTGRES_USER: ${POSTGRES_USER:-atom_user}
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-local_password}
+ DATABASE_URL: postgresql://${POSTGRES_USER:-atom_user}:${POSTGRES_PASSWORD:-local_password}@postgres-local:5432/${POSTGRES_DB:-atom_local}
+ REDIS_URL: redis://redis-local:6379
+ volumes:
+ - .:/app
+ - /app/node_modules
+ - /app/.next
+ depends_on:
+ postgres-local:
+ condition: service_healthy
+ redis-local:
+ condition: service_healthy
+ profiles:
+ - dev
+ - local
+ networks:
+ - atom-local-net
+ labels:
+ - "atom.environment=local"
+ - "atom.service=app"
+ # Production server (for local testing)
+ app-prod:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ container_name: atom-app-prod
+ ports:
+ - "${PORT:-3000}:3000"
+ environment:
+ NODE_ENV: production
+ POSTGRES_HOST: postgres-local
+ POSTGRES_PORT: 5432
+ POSTGRES_DB: ${POSTGRES_DB:-atom_local}
+ POSTGRES_USER: ${POSTGRES_USER:-atom_user}
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-local_password}
+ DATABASE_URL: postgresql://${POSTGRES_USER:-atom_user}:${POSTGRES_PASSWORD:-local_password}@postgres-local:5432/${POSTGRES_DB:-atom_local}
+ depends_on:
+ postgres-local:
+ condition: service_healthy
+ profiles:
+ - prod
+ networks:
+ - atom-local-net
+ labels:
+ - "atom.environment=local"
+ - "atom.service=app"
+ # Prisma studio for database management
+ prisma-studio:
+ image: node:18-alpine
+ container_name: atom-prisma-studio
+ working_dir: /app
+ command: sh -c "npx prisma studio --host 0.0.0.0 --port 5555"
+ ports:
+ - "5555:5555"
+ environment:
+ DATABASE_URL: postgresql://${POSTGRES_USER:-atom_user}:${POSTGRES_PASSWORD:-local_password}@postgres-local:5432/${POSTGRES_DB:-atom_local}
+ volumes:
+ - .:/app
+ depends_on:
+ postgres-local:
+ condition: service_healthy
+ profiles:
+ - studio
+ networks:
+ - atom-local-net
+ labels:
+ - "atom.environment=local"
+ - "atom.service=tool"
+
+volumes:
+ postgres_local_data:
+ redis_local_data:
+
+networks:
+ atom-local-net:
+ driver: bridge