linxus fs fixes

This commit is contained in:
Boki 2025-06-09 22:55:51 -04:00
parent ac23b70146
commit 0b7846fe67
292 changed files with 41947 additions and 41947 deletions

View file

@ -1,244 +1,244 @@
services:
# Dragonfly - Redis replacement for caching and events
dragonfly:
image: docker.dragonflydb.io/dragonflydb/dragonfly:latest
container_name: trading-bot-dragonfly
ports:
- "6379:6379"
deploy:
resources:
limits:
cpus: '4.0' # Use up to 4 CPU cores
memory: 8G # Use up to 8GB RAM
reservations:
cpus: '2.0' # Reserve at least 2 CPU cores
memory: 4G # Reserve at least 4GB RAM
command:
- dragonfly
- --logtostderr
- --cache_mode=true
- --maxmemory=8gb
- --proactor_threads=8
- --bind=0.0.0.0
- --admin_port=6380
- --proactor_threads=8 # Number of I/O threads (CPU cores)
- --cache_mode=true # Enable cache mode for better performance
- --cluster_mode=emulated # Better for single-node performance
- --hz=500 # Increase background task frequency
- --tcp_keepalive=60
- --conn_use_incoming_cpu=true # Better CPU utilization
- --lock_on_hashtags
- --default_lua_flags=allow-undeclared-keys
volumes:
- dragonfly_data:/data
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# PostgreSQL - Operational data (orders, positions, strategies)
postgres:
image: postgres:16-alpine
container_name: trading-bot-postgres
environment:
POSTGRES_DB: trading_bot
POSTGRES_USER: trading_user
POSTGRES_PASSWORD: trading_pass_dev
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./database/postgres/init:/docker-entrypoint-initdb.d
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U trading_user -d trading_bot"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# QuestDB - Time-series data (OHLCV, indicators, performance)
questdb:
image: questdb/questdb:latest
container_name: trading-bot-questdb
ports:
- "9000:9000" # Web console
- "8812:8812" # PostgreSQL wire protocol
- "9009:9009" # InfluxDB line protocol
volumes:
- questdb_data:/var/lib/questdb
environment:
- QDB_TELEMETRY_ENABLED=false
restart: unless-stopped
networks:
- trading-bot-network
# MongoDB - Document storage (sentiment, raw docs, unstructured data)
mongodb:
image: mongo:7-jammy
container_name: trading-bot-mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: trading_admin
MONGO_INITDB_ROOT_PASSWORD: trading_mongo_dev
MONGO_INITDB_DATABASE: trading_documents
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
- ./database/mongodb/init:/docker-entrypoint-initdb.d
restart: unless-stopped
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# Redis Insight - GUI for Dragonfly debugging
redis-insight:
image: redislabs/redisinsight:latest
container_name: trading-bot-redis-insight
ports:
- "8001:8001"
environment:
- REDIS_HOSTS=local:dragonfly:6379
depends_on:
- dragonfly
restart: unless-stopped
networks:
- trading-bot-network
# PgAdmin - PostgreSQL GUI
pgadmin:
image: dpage/pgadmin4:latest
container_name: trading-bot-pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@tradingbot.local
PGADMIN_DEFAULT_PASSWORD: admin123
PGADMIN_CONFIG_SERVER_MODE: 'False'
PGADMIN_DISABLE_POSTFIX: 'true'
ports:
- "8080:80"
volumes:
- pgadmin_data:/var/lib/pgadmin
depends_on:
- postgres
restart: unless-stopped
networks:
- trading-bot-network
# Mongo Express - MongoDB GUI
mongo-express:
image: mongo-express:latest
container_name: trading-bot-mongo-express
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: trading_admin
ME_CONFIG_MONGODB_ADMINPASSWORD: trading_mongo_dev
ME_CONFIG_MONGODB_SERVER: mongodb
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: admin123
ports:
- "8081:8081"
depends_on:
- mongodb
restart: unless-stopped
networks:
- trading-bot-network
# Prometheus - Metrics collection
prometheus:
image: prom/prometheus:latest
container_name: trading-bot-prometheus
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
restart: unless-stopped
networks:
- trading-bot-network
# Loki - Log aggregation
loki:
image: grafana/loki:2.9.2
container_name: trading-bot-loki
ports:
- "3100:3100"
volumes:
- loki_data:/loki
- ./monitoring/loki:/etc/loki
command: -config.file=/etc/loki/loki-config.yaml
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
networks:
- trading-bot-network
# Grafana - Visualization for logs and metrics
grafana:
image: grafana/grafana:10.2.0
container_name: trading-bot-grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_SECURITY_ADMIN_USER=admin
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana_data:/var/lib/grafana
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning
depends_on:
- prometheus
- loki
restart: unless-stopped
networks:
- trading-bot-network
# Bull Board - Queue monitoring
bull-board:
image: deadly0/bull-board
container_name: trading-bot-bull-board
ports:
- "3001:3000"
environment:
- REDIS_HOST=dragonfly
- REDIS_PORT=6379
- REDIS_PASSWORD=
- REDIS_DB=0
- REDIS_URL=redis://dragonfly:6379
depends_on:
- dragonfly
restart: unless-stopped
networks:
- trading-bot-network
volumes:
postgres_data:
questdb_data:
dragonfly_data:
mongodb_data:
pgadmin_data:
prometheus_data:
grafana_data:
loki_data:
networks:
trading-bot-network:
driver: bridge
services:
# Dragonfly - Redis replacement for caching and events
dragonfly:
image: docker.dragonflydb.io/dragonflydb/dragonfly:latest
container_name: trading-bot-dragonfly
ports:
- "6379:6379"
deploy:
resources:
limits:
cpus: '4.0' # Use up to 4 CPU cores
memory: 8G # Use up to 8GB RAM
reservations:
cpus: '2.0' # Reserve at least 2 CPU cores
memory: 4G # Reserve at least 4GB RAM
command:
- dragonfly
- --logtostderr
- --cache_mode=true
- --maxmemory=8gb
- --proactor_threads=8
- --bind=0.0.0.0
- --admin_port=6380
- --proactor_threads=8 # Number of I/O threads (CPU cores)
- --cache_mode=true # Enable cache mode for better performance
- --cluster_mode=emulated # Better for single-node performance
- --hz=500 # Increase background task frequency
- --tcp_keepalive=60
- --conn_use_incoming_cpu=true # Better CPU utilization
- --lock_on_hashtags
- --default_lua_flags=allow-undeclared-keys
volumes:
- dragonfly_data:/data
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# PostgreSQL - Operational data (orders, positions, strategies)
postgres:
image: postgres:16-alpine
container_name: trading-bot-postgres
environment:
POSTGRES_DB: trading_bot
POSTGRES_USER: trading_user
POSTGRES_PASSWORD: trading_pass_dev
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./database/postgres/init:/docker-entrypoint-initdb.d
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U trading_user -d trading_bot"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# QuestDB - Time-series data (OHLCV, indicators, performance)
questdb:
image: questdb/questdb:latest
container_name: trading-bot-questdb
ports:
- "9000:9000" # Web console
- "8812:8812" # PostgreSQL wire protocol
- "9009:9009" # InfluxDB line protocol
volumes:
- questdb_data:/var/lib/questdb
environment:
- QDB_TELEMETRY_ENABLED=false
restart: unless-stopped
networks:
- trading-bot-network
# MongoDB - Document storage (sentiment, raw docs, unstructured data)
mongodb:
image: mongo:7-jammy
container_name: trading-bot-mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: trading_admin
MONGO_INITDB_ROOT_PASSWORD: trading_mongo_dev
MONGO_INITDB_DATABASE: trading_documents
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
- ./database/mongodb/init:/docker-entrypoint-initdb.d
restart: unless-stopped
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 3
networks:
- trading-bot-network
# Redis Insight - GUI for Dragonfly debugging
redis-insight:
image: redislabs/redisinsight:latest
container_name: trading-bot-redis-insight
ports:
- "8001:8001"
environment:
- REDIS_HOSTS=local:dragonfly:6379
depends_on:
- dragonfly
restart: unless-stopped
networks:
- trading-bot-network
# PgAdmin - PostgreSQL GUI
pgadmin:
image: dpage/pgadmin4:latest
container_name: trading-bot-pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@tradingbot.local
PGADMIN_DEFAULT_PASSWORD: admin123
PGADMIN_CONFIG_SERVER_MODE: 'False'
PGADMIN_DISABLE_POSTFIX: 'true'
ports:
- "8080:80"
volumes:
- pgadmin_data:/var/lib/pgadmin
depends_on:
- postgres
restart: unless-stopped
networks:
- trading-bot-network
# Mongo Express - MongoDB GUI
mongo-express:
image: mongo-express:latest
container_name: trading-bot-mongo-express
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: trading_admin
ME_CONFIG_MONGODB_ADMINPASSWORD: trading_mongo_dev
ME_CONFIG_MONGODB_SERVER: mongodb
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: admin123
ports:
- "8081:8081"
depends_on:
- mongodb
restart: unless-stopped
networks:
- trading-bot-network
# Prometheus - Metrics collection
prometheus:
image: prom/prometheus:latest
container_name: trading-bot-prometheus
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
restart: unless-stopped
networks:
- trading-bot-network
# Loki - Log aggregation
loki:
image: grafana/loki:2.9.2
container_name: trading-bot-loki
ports:
- "3100:3100"
volumes:
- loki_data:/loki
- ./monitoring/loki:/etc/loki
command: -config.file=/etc/loki/loki-config.yaml
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
networks:
- trading-bot-network
# Grafana - Visualization for logs and metrics
grafana:
image: grafana/grafana:10.2.0
container_name: trading-bot-grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_SECURITY_ADMIN_USER=admin
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana_data:/var/lib/grafana
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning
depends_on:
- prometheus
- loki
restart: unless-stopped
networks:
- trading-bot-network
# Bull Board - Queue monitoring
bull-board:
image: deadly0/bull-board
container_name: trading-bot-bull-board
ports:
- "3001:3000"
environment:
- REDIS_HOST=dragonfly
- REDIS_PORT=6379
- REDIS_PASSWORD=
- REDIS_DB=0
- REDIS_URL=redis://dragonfly:6379
depends_on:
- dragonfly
restart: unless-stopped
networks:
- trading-bot-network
volumes:
postgres_data:
questdb_data:
dragonfly_data:
mongodb_data:
pgadmin_data:
prometheus_data:
grafana_data:
loki_data:
networks:
trading-bot-network:
driver: bridge