151 lines
4.0 KiB
YAML
151 lines
4.0 KiB
YAML
# ©AngelaMos | 2025
|
|
# Development Docker Compose
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: chat-postgres-dev
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-chat_auth}
|
|
POSTGRES_USER: ${POSTGRES_USER:-chat_user}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD required}
|
|
POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C"
|
|
volumes:
|
|
- postgres_dev_data:/var/lib/postgresql/data
|
|
ports:
|
|
- "${POSTGRES_HOST_PORT:-54332}:5432"
|
|
networks:
|
|
- chat_network_dev
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-chat_user} -d ${POSTGRES_DB:-chat_auth}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
surrealdb:
|
|
image: surrealdb/surrealdb:v3.0.5
|
|
container_name: chat-surrealdb-dev
|
|
user: "0:0"
|
|
command: start --log trace --user root --pass ${SURREAL_PASSWORD:?SURREAL_PASSWORD required} rocksdb:/data/database.db
|
|
environment:
|
|
- SURREAL_USER=root
|
|
- SURREAL_PASS=${SURREAL_PASSWORD}
|
|
volumes:
|
|
- surreal_dev_data:/data
|
|
ports:
|
|
- "${SURREAL_HOST_PORT:-7781}:8000"
|
|
networks:
|
|
- chat_network_dev
|
|
healthcheck:
|
|
test: ["CMD", "/surreal", "isready", "--endpoint", "http://localhost:8000"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:8-alpine
|
|
container_name: chat-redis-dev
|
|
command: >
|
|
redis-server
|
|
--appendonly yes
|
|
--maxmemory 2gb
|
|
--maxmemory-policy allkeys-lru
|
|
--save 60 1000
|
|
--loglevel warning
|
|
volumes:
|
|
- redis_dev_data:/data
|
|
ports:
|
|
- "${REDIS_HOST_PORT:-43434}:6379"
|
|
networks:
|
|
- chat_network_dev
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
backend:
|
|
build:
|
|
context: .
|
|
dockerfile: conf/docker/dev/fastapi.docker
|
|
container_name: chat-backend-dev
|
|
environment:
|
|
ENV: ${ENV:-development}
|
|
DEBUG: ${DEBUG:-true}
|
|
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY required}
|
|
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-chat_user}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-chat_auth}
|
|
SURREAL_URL: ${SURREAL_URL:-ws://surrealdb:8000}
|
|
SURREAL_USER: ${SURREAL_USER:-root}
|
|
SURREAL_PASSWORD: ${SURREAL_PASSWORD}
|
|
SURREAL_NAMESPACE: ${SURREAL_NAMESPACE:-chat}
|
|
SURREAL_DATABASE: ${SURREAL_DATABASE:-production}
|
|
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
|
RP_ID: ${RP_ID:-localhost}
|
|
RP_NAME: ${RP_NAME:-Encrypted P2P Chat}
|
|
RP_ORIGIN: ${RP_ORIGIN:-http://localhost:32342}
|
|
CORS_ORIGINS: ${CORS_ORIGINS}
|
|
volumes:
|
|
- ./backend:/app
|
|
- /app/.venv
|
|
- /app/__pycache__
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
surrealdb:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- chat_network_dev
|
|
ports:
|
|
- "${BACKEND_HOST_PORT:-30200}:8000"
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: .
|
|
dockerfile: conf/docker/dev/vite.docker
|
|
container_name: chat-frontend-dev
|
|
environment:
|
|
- VITE_API_URL=${VITE_API_URL:-http://localhost:8000}
|
|
- VITE_WS_URL=${VITE_WS_URL:-ws://localhost:8000}
|
|
- VITE_RP_ID=${VITE_RP_ID:-localhost}
|
|
volumes:
|
|
- ./frontend:/app
|
|
- /app/node_modules
|
|
depends_on:
|
|
- backend
|
|
networks:
|
|
- chat_network_dev
|
|
ports:
|
|
- "${FRONTEND_DEV_PORT:-34343}:5173"
|
|
restart: unless-stopped
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: chat-nginx-dev
|
|
ports:
|
|
- "${NGINX_HTTP_PORT:-3234}:80"
|
|
volumes:
|
|
- ./conf/nginx/dev.nginx:/etc/nginx/nginx.conf:ro
|
|
- ./conf/nginx/http.conf:/etc/nginx/http.conf:ro
|
|
depends_on:
|
|
- backend
|
|
- frontend
|
|
networks:
|
|
- chat_network_dev
|
|
restart: unless-stopped
|
|
|
|
networks:
|
|
chat_network_dev:
|
|
driver: bridge
|
|
name: chat_network_dev
|
|
|
|
volumes:
|
|
postgres_dev_data:
|
|
name: chat_postgres_dev_data
|
|
surreal_dev_data:
|
|
name: chat_surreal_dev_data
|
|
redis_dev_data:
|
|
name: chat_redis_dev_data
|