services: chatbot: build: context: . dockerfile: Dockerfile container_name: py_chatbot restart: unless-stopped ports: - "8080:8080" environment: # Database Configuration - DB_TYPE=sqlite - SQLITE_PATH=/app/data/chatbot.db # Flask Configuration - FLASK_HOST=0.0.0.0 - FLASK_PORT=8080 - FLASK_DEBUG=false - FLASK_SECRET_KEY=your-super-secret-key-change-this-in-production # Session Configuration - SESSION_LIFETIME_HOURS=24 - SESSION_COOKIE_SECURE=false - SESSION_COOKIE_HTTPONLY=true volumes: # Persist database and logs - chatbot_data:/app/data - chatbot_logs:/app/logs networks: - chatbot_network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/"] interval: 30s timeout: 10s retries: 3 start_period: 30s postgres: image: postgres:15-alpine container_name: py_chatbot_postgres restart: unless-stopped environment: - POSTGRES_DB=chatbot - POSTGRES_USER=chatbot_user - POSTGRES_PASSWORD=secure_password_change_this volumes: - postgres_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro networks: - chatbot_network profiles: - postgres # Optional: Redis for Session Storage redis: image: redis:7-alpine container_name: py_chatbot_redis restart: unless-stopped command: redis-server --appendonly yes --requirepass secure_redis_password_change_this volumes: - redis_data:/data networks: - chatbot_network profiles: - redis # Named Volumes volumes: chatbot_data: driver: local chatbot_logs: driver: local postgres_data: driver: local redis_data: driver: local # Networks networks: chatbot_network: driver: bridge