Move configuration from config.json to docker-compose.yml environment variables
This commit is contained in:
parent
993817317e
commit
9c7ca7209f
@ -3,29 +3,35 @@ version: '3.8'
|
|||||||
services:
|
services:
|
||||||
factsdb:
|
factsdb:
|
||||||
build: .
|
build: .
|
||||||
container_name: factsdb
|
|
||||||
ports:
|
ports:
|
||||||
- "21:21"
|
|
||||||
- "5000:5000"
|
- "5000:5000"
|
||||||
|
- "2121:2121"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/app/data
|
|
||||||
- ./facts.db:/app/facts.db
|
- ./facts.db:/app/facts.db
|
||||||
|
- ./data:/app/data
|
||||||
environment:
|
environment:
|
||||||
- AI_ENDPOINT_URL=http://example.com:4000
|
- FTP_HOST=0.0.0.0
|
||||||
|
- FTP_PORT=2121
|
||||||
|
- FTP_USERNAME=factsdb
|
||||||
|
- FTP_PASSWORD=factsdb
|
||||||
|
- AI_ENDPOINT_URL=http://example.com:4000/v1/chat/completions
|
||||||
- AI_ENDPOINT_TOKEN=111
|
- AI_ENDPOINT_TOKEN=111
|
||||||
- FTP_ROOT_DIR=/app/ftp_data
|
- DATABASE_PATH=/app/facts.db
|
||||||
networks:
|
restart: unless-stopped
|
||||||
- factsdb-network
|
command: python -m factsdb.main api
|
||||||
|
|
||||||
# Optional: Add a database service for persistence
|
# Optional: Add a separate service for FTP if needed
|
||||||
# db:
|
# ftp:
|
||||||
# image: sqlite:latest
|
# build: .
|
||||||
# container_name: factsdb-db
|
# ports:
|
||||||
|
# - "2121:2121"
|
||||||
# volumes:
|
# volumes:
|
||||||
# - ./db_data:/var/lib/sqlite
|
# - ./facts.db:/app/facts.db
|
||||||
# networks:
|
# - ./data:/app/data
|
||||||
# - factsdb-network
|
# environment:
|
||||||
|
# - FTP_HOST=0.0.0.0
|
||||||
networks:
|
# - FTP_PORT=2121
|
||||||
factsdb-network:
|
# - FTP_USERNAME=factsdb
|
||||||
driver: bridge
|
# - FTP_PASSWORD=factsdb
|
||||||
|
# restart: unless-stopped
|
||||||
|
# command: python -m factsdb.main ftp
|
||||||
@ -1,64 +1,56 @@
|
|||||||
"""
|
"""
|
||||||
Configuration management for FactsDB service
|
Configuration module for FactsDB service
|
||||||
|
Loads configuration from environment variables
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class AIEndpointConfig:
|
|
||||||
"""Configuration for AI endpoint"""
|
|
||||||
url: str = "http://example.com:4000"
|
|
||||||
auth_token: str = "111"
|
|
||||||
default_model: str = "gpt-oss"
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DatabaseConfig:
|
class DatabaseConfig:
|
||||||
"""Database configuration"""
|
"""Database configuration"""
|
||||||
type: str = "sqlite"
|
path: str = "facts.db"
|
||||||
connection_string: str = "facts.db"
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class FTPConfig:
|
class AIEndpointConfig:
|
||||||
|
"""AI endpoint configuration"""
|
||||||
|
url: str = "http://example.com:4000/v1/chat/completions"
|
||||||
|
auth_token: str = "111"
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class FTPServerConfig:
|
||||||
"""FTP server configuration"""
|
"""FTP server configuration"""
|
||||||
host: str = "0.0.0.0"
|
host: str = "0.0.0.0"
|
||||||
port: int = 21
|
port: int = 2121
|
||||||
username: str = "factsdb"
|
username: str = "factsdb"
|
||||||
password: str = "factsdb123"
|
password: str = "factsdb"
|
||||||
root_directory: str = "/tmp/factsdb_ftp"
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class FileOnboardingConfig:
|
class SchedulerConfig:
|
||||||
"""Configuration for file onboarding"""
|
"""Scheduler configuration"""
|
||||||
directory_path: str
|
interval_minutes: int = 10
|
||||||
table_name: str
|
|
||||||
prompt: str
|
|
||||||
ai_model: str = "gpt-oss"
|
|
||||||
database_type: str = "sqlite"
|
|
||||||
cache_file: str = ".factsdb_cache"
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
"""Main configuration class"""
|
"""Main configuration class"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ai_endpoint = AIEndpointConfig(
|
|
||||||
url=os.getenv("AI_ENDPOINT_URL", "http://example.com:4000"),
|
|
||||||
auth_token=os.getenv("AI_ENDPOINT_TOKEN", "111"),
|
|
||||||
default_model=os.getenv("DEFAULT_AI_MODEL", "gpt-oss")
|
|
||||||
)
|
|
||||||
|
|
||||||
self.database = DatabaseConfig(
|
self.database = DatabaseConfig(
|
||||||
type=os.getenv("DB_TYPE", "sqlite"),
|
path=os.getenv('DATABASE_PATH', 'facts.db')
|
||||||
connection_string=os.getenv("DB_CONNECTION", "facts.db")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.ftp = FTPConfig(
|
self.ai_endpoint = AIEndpointConfig(
|
||||||
host=os.getenv("FTP_HOST", "0.0.0.0"),
|
url=os.getenv('AI_ENDPOINT_URL', 'http://example.com:4000/v1/chat/completions'),
|
||||||
port=int(os.getenv("FTP_PORT", "21")),
|
auth_token=os.getenv('AI_ENDPOINT_TOKEN', '111')
|
||||||
username=os.getenv("FTP_USERNAME", "factsdb"),
|
|
||||||
password=os.getenv("FTP_PASSWORD", "factsdb123"),
|
|
||||||
root_directory=os.getenv("FTP_ROOT_DIR", "/tmp/factsdb_ftp")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.cache_file = os.getenv("CACHE_FILE", ".factsdb_cache")
|
self.ftp_server = FTPServerConfig(
|
||||||
|
host=os.getenv('FTP_HOST', '0.0.0.0'),
|
||||||
|
port=int(os.getenv('FTP_PORT', '2121')),
|
||||||
|
username=os.getenv('FTP_USERNAME', 'factsdb'),
|
||||||
|
password=os.getenv('FTP_PASSWORD', 'factsdb')
|
||||||
|
)
|
||||||
|
|
||||||
|
self.scheduler = SchedulerConfig(
|
||||||
|
interval_minutes=int(os.getenv('SCHEDULER_INTERVAL', '10'))
|
||||||
|
)
|
||||||
Loading…
x
Reference in New Issue
Block a user