honcho/docker-compose.yml.example

147 lines
3.0 KiB
Plaintext

services:
api:
image: honcho:latest
build:
context: .
dockerfile: Dockerfile
depends_on:
database:
condition: service_healthy
ports:
- 8000:8000
volumes:
- .:/app
- venv:/app/.venv
env_file:
- .env
deriver:
build:
context: .
dockerfile: Dockerfile
entrypoint: ["uv", "run", "python", "-m", "src.deriver"]
depends_on:
database:
condition: service_healthy
volumes:
- .:/app
- venv:/app/.venv
env_file:
- .env
database:
image: pgvector/pgvector:pg15
restart: always
ports:
- 5432:5432
command: ["postgres", "-c", "max_connections=800"]
environment:
- POSTGRES_DB=honcho
- POSTGRES_USER=testuser
- POSTGRES_PASSWORD=testpwd
- POSTGRES_HOST_AUTH_METHOD=trust
- 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 testuser -d honcho"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:8.2
restart: always
ports:
- 6379:6379
volumes:
- ./redis-data:/data
healthcheck:
test: ["CMD-SHELL", "redis-cli ping"]
interval: 5s
timeout: 5s
retries: 5
mimir:
image: grafana/mimir:2.14.0
command:
- -config.file=/etc/mimir/mimir.yaml
ports:
- 9009:9009
volumes:
- ./mimir-data:/data
configs:
- source: mimir_config
target: /etc/mimir/mimir.yaml
grafana:
image: grafana/grafana:11.4.0
ports:
- 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:
- ./grafana-data:/var/lib/grafana
depends_on:
- mimir
volumes:
pgdata:
venv:
configs:
mimir_config:
content: |
multitenancy_enabled: false
server:
http_listen_port: 9009
log_level: warn
common:
storage:
backend: filesystem
filesystem:
dir: /data
blocks_storage:
backend: filesystem
filesystem:
dir: /data/blocks
bucket_store:
sync_dir: /data/tsdb-sync
tsdb:
dir: /data/tsdb
compactor:
data_dir: /data/compactor
sharding_ring:
kvstore:
store: memberlist
distributor:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
ingester:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
replication_factor: 1
ruler_storage:
backend: filesystem
filesystem:
dir: /data/rules
alertmanager_storage:
backend: filesystem
filesystem:
dir: /data/alertmanager
store_gateway:
sharding_ring:
replication_factor: 1