125 lines
3.3 KiB
Plaintext
125 lines
3.3 KiB
Plaintext
# Honcho Docker Compose
|
|
#
|
|
# Usage:
|
|
# cp docker-compose.yml.example docker-compose.yml
|
|
# cp .env.template .env # edit with your provider config
|
|
# docker compose up -d --build
|
|
#
|
|
# By default, ports are bound to 127.0.0.1 (localhost only).
|
|
# For development, uncomment the source mounts and monitoring services below.
|
|
|
|
services:
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
entrypoint: ["sh", "docker/entrypoint.sh"]
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
ports:
|
|
- "127.0.0.1:8000:8000"
|
|
# -- Development: mount source for live reload --
|
|
# volumes:
|
|
# - .:/app
|
|
# - venv:/app/.venv
|
|
environment:
|
|
- DB_CONNECTION_URI=postgresql+psycopg://postgres:postgres@database:5432/postgres
|
|
- CACHE_URL=redis://redis:6379/0?suppress=true
|
|
- CACHE_ENABLED=true
|
|
env_file:
|
|
- path: .env
|
|
required: false
|
|
restart: unless-stopped
|
|
|
|
deriver:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
entrypoint: ["/app/.venv/bin/python", "-m", "src.deriver"]
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
# -- Development: mount source for live reload --
|
|
# volumes:
|
|
# - .:/app
|
|
# - venv:/app/.venv
|
|
environment:
|
|
- DB_CONNECTION_URI=postgresql+psycopg://postgres:postgres@database:5432/postgres
|
|
- CACHE_URL=redis://redis:6379/0?suppress=true
|
|
- CACHE_ENABLED=true
|
|
env_file:
|
|
- path: .env
|
|
required: false
|
|
restart: unless-stopped
|
|
|
|
database:
|
|
image: pgvector/pgvector:pg15
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:5432:5432"
|
|
command: ["postgres", "-c", "max_connections=200"]
|
|
environment:
|
|
- POSTGRES_DB=postgres
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_PASSWORD=postgres
|
|
- PGDATA=/var/lib/postgresql/data/pgdata
|
|
volumes:
|
|
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
|
|
- pgdata:/var/lib/postgresql/data/
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:8.2
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:6379:6379"
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# -- Development: monitoring stack (uncomment to enable) --
|
|
# prometheus:
|
|
# image: prom/prometheus:v3.2.1
|
|
# ports:
|
|
# - "127.0.0.1:9090:9090"
|
|
# volumes:
|
|
# - ./docker/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
# - prometheus-data:/prometheus
|
|
# depends_on:
|
|
# api:
|
|
# condition: service_started
|
|
# grafana:
|
|
# image: grafana/grafana:11.4.0
|
|
# ports:
|
|
# - "127.0.0.1:3000:3000"
|
|
# environment:
|
|
# - GF_SECURITY_ADMIN_USER=admin
|
|
# - GF_SECURITY_ADMIN_PASSWORD=admin
|
|
# - GF_AUTH_ANONYMOUS_ENABLED=true
|
|
# - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
|
|
# volumes:
|
|
# - ./docker/grafana-datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml:ro
|
|
# depends_on:
|
|
# prometheus:
|
|
# condition: service_started
|
|
|
|
volumes:
|
|
pgdata:
|
|
redis-data:
|
|
# -- Development: uncomment if using source mounts --
|
|
# venv:
|
|
# prometheus-data:
|