Move configuration from config.json to docker-compose.yml environment variables

This commit is contained in:
Jarian Cottingham 2026-02-02 20:38:15 -06:00
parent 993817317e
commit 9c7ca7209f
2 changed files with 53 additions and 55 deletions

View File

@ -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

View File

@ -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'))
)