171 lines
5.3 KiB
YAML
171 lines
5.3 KiB
YAML
name: langfuse
|
|
|
|
services:
|
|
langfuse-worker:
|
|
image: docker.io/langfuse/langfuse-worker:4
|
|
restart: always
|
|
depends_on: &langfuse-depends-on
|
|
postgres:
|
|
condition: service_healthy
|
|
minio:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
clickhouse:
|
|
condition: service_healthy
|
|
environment: &langfuse-worker-env
|
|
NEXTAUTH_URL: ${NEXTAUTH_URL}
|
|
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
|
|
SALT: ${SALT}
|
|
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
|
|
TELEMETRY_ENABLED: "false"
|
|
LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES: "false"
|
|
CLICKHOUSE_MIGRATION_URL: clickhouse://${CLICKHOUSE_USER}:${CLICKHOUSE_PASSWORD}@clickhouse:9000
|
|
CLICKHOUSE_URL: http://clickhouse:8123
|
|
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
|
|
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
|
|
CLICKHOUSE_CLUSTER_ENABLED: "false"
|
|
LANGFUSE_USE_AZURE_BLOB: "false"
|
|
LANGFUSE_USE_OCI_NATIVE_OBJECT_STORAGE: "false"
|
|
LANGFUSE_S3_EVENT_UPLOAD_BUCKET: langfuse
|
|
LANGFUSE_S3_EVENT_UPLOAD_REGION: auto
|
|
LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
|
|
LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
|
|
LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT: http://minio:9000
|
|
LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE: "true"
|
|
LANGFUSE_S3_EVENT_UPLOAD_PREFIX: events/
|
|
LANGFUSE_S3_MEDIA_UPLOAD_BUCKET: langfuse
|
|
LANGFUSE_S3_MEDIA_UPLOAD_REGION: auto
|
|
LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT: http://minio:9000
|
|
LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE: "true"
|
|
LANGFUSE_S3_MEDIA_UPLOAD_PREFIX: media/
|
|
LANGFUSE_S3_BATCH_EXPORT_ENABLED: "false"
|
|
LANGFUSE_S3_BATCH_EXPORT_BUCKET: langfuse
|
|
LANGFUSE_S3_BATCH_EXPORT_PREFIX: exports/
|
|
LANGFUSE_S3_BATCH_EXPORT_REGION: auto
|
|
LANGFUSE_S3_BATCH_EXPORT_ENDPOINT: http://minio:9000
|
|
LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
|
|
LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
|
|
LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE: "true"
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
REDIS_AUTH: ${REDIS_AUTH}
|
|
REDIS_TLS_ENABLED: "false"
|
|
networks:
|
|
- default
|
|
|
|
langfuse-web:
|
|
image: docker.io/langfuse/langfuse:4
|
|
restart: always
|
|
depends_on: *langfuse-depends-on
|
|
environment:
|
|
<<: *langfuse-worker-env
|
|
HOSTNAME: "0.0.0.0"
|
|
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=traefik_proxy"
|
|
- "traefik.http.routers.langfuse.rule=Host(`lf.kzbrd.ru`)"
|
|
- "traefik.http.routers.langfuse.entrypoints=websecure"
|
|
- "traefik.http.routers.langfuse.tls=true"
|
|
- "traefik.http.routers.langfuse.tls.certresolver=myresolver"
|
|
- "traefik.http.services.langfuse.loadbalancer.server.port=3000"
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
networks:
|
|
- traefik_proxy
|
|
- default
|
|
|
|
clickhouse:
|
|
image: docker.io/clickhouse/clickhouse-server:25.12
|
|
restart: always
|
|
user: "101:101"
|
|
environment:
|
|
CLICKHOUSE_DB: default
|
|
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
|
|
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
|
|
volumes:
|
|
- langfuse_clickhouse_data:/var/lib/clickhouse
|
|
- langfuse_clickhouse_logs:/var/log/clickhouse-server
|
|
healthcheck:
|
|
test: wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 1s
|
|
networks:
|
|
- default
|
|
|
|
minio:
|
|
image: docker.io/minio/minio
|
|
restart: always
|
|
entrypoint: sh
|
|
command: -c 'mkdir -p /data/langfuse && minio server /data --address ":9000" --console-address ":9001"'
|
|
environment:
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
|
volumes:
|
|
- langfuse_minio_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
interval: 1s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 1s
|
|
networks:
|
|
- default
|
|
|
|
redis:
|
|
image: docker.io/redis:7
|
|
restart: always
|
|
command: >
|
|
--requirepass ${REDIS_AUTH}
|
|
--maxmemory-policy noeviction
|
|
volumes:
|
|
- langfuse_redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_AUTH}", "ping"]
|
|
interval: 3s
|
|
timeout: 10s
|
|
retries: 10
|
|
networks:
|
|
- default
|
|
|
|
postgres:
|
|
image: docker.io/postgres:${POSTGRES_VERSION:-17}
|
|
restart: always
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 10
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
TZ: UTC
|
|
PGTZ: UTC
|
|
volumes:
|
|
- langfuse_postgres_data:/var/lib/postgresql/data
|
|
networks:
|
|
- default
|
|
|
|
volumes:
|
|
langfuse_postgres_data:
|
|
driver: local
|
|
langfuse_clickhouse_data:
|
|
driver: local
|
|
langfuse_clickhouse_logs:
|
|
driver: local
|
|
langfuse_minio_data:
|
|
driver: local
|
|
langfuse_redis_data:
|
|
driver: local
|
|
|
|
networks:
|
|
traefik_proxy:
|
|
external: true
|
|
default:
|
|
driver: bridge
|