services:
smarttable:
build:
context: .
dockerfile: Dockerfile
image: ${SMARTTABLE_IMAGE:-smarttable:latest}
container_name: smarttable
restart: unless-stopped
ports:
- "${APP_PORT:-80}:80"
environment:
FLASK_ENV: ${FLASK_ENV:-production}
SECRET_KEY: ${SECRET_KEY:-change-this-secret-key-in-production}
JWT_SECRET_KEY: ${JWT_SECRET_KEY:-change-this-jwt-secret-in-production}
JWT_ACCESS_TOKEN_EXPIRES: ${JWT_ACCESS_TOKEN_EXPIRES:-86400}
DATABASE_URL: ${DATABASE_URL:-}
REDIS_URL: redis://127.0.0.1:6379/0
REDIS_HOST: localhost
REDIS_PORT: 6379
SOCKETIO_MESSAGE_QUEUE: redis://127.0.0.1:6379/2
UPLOAD_FOLDER: /app/uploads
MAX_CONTENT_LENGTH: 52428800
LOG_LEVEL: ${LOG_LEVEL:-INFO}
ENABLE_REALTIME: ${ENABLE_REALTIME:-false}
volumes:
- sqlite_data:/app/data
- redis_data:/data/redis
- uploads_data:/app/uploads
- ./logs:/app/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
networks:
- smarttable-network
volumes:
sqlite_data:
driver: local
redis_data:
driver: local
uploads_data:
driver: local
networks:
smarttable-network:
driver: bridge