version: '3.8' services: # PostgreSQL Database db: image: docker.io/postgres:15-alpine container_name: baserow-postgres restart: unless-stopped environment: POSTGRES_DB: baserow POSTGRES_USER: baserow POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-changeme_secure_postgres_password} volumes: - /mnt/flash1/podman/base/data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U baserow"] interval: 10s timeout: 5s retries: 5 networks: - baserow-network # Redis Cache redis: image: docker.io/redis:7-alpine container_name: baserow-redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD:-changeme_secure_redis_password} volumes: - /mnt/flash1/podman/base/data/redis:/data healthcheck: test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "${REDIS_PASSWORD:-changeme_secure_redis_password}", "ping"] interval: 10s timeout: 5s retries: 5 networks: - baserow-network # Baserow Application (All-in-One) baserow: image: docker.io/baserow/baserow:latest container_name: baserow restart: unless-stopped depends_on: db: condition: service_healthy redis: condition: service_healthy ports: - "8079:80" # HTTP environment: # Database Configuration DATABASE_HOST: db DATABASE_NAME: baserow DATABASE_USER: baserow DATABASE_PASSWORD: ${DATABASE_PASSWORD:-changeme_secure_postgres_password} DATABASE_PORT: 5432 # Redis Configuration REDIS_HOST: redis REDIS_PASSWORD: ${REDIS_PASSWORD:-changeme_secure_redis_password} REDIS_PORT: 6379 REDIS_PROTOCOL: redis # Baserow Configuration BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL:-http://localhost} SECRET_KEY: ${SECRET_KEY:-changeme_secret_key_minimum_50_characters_long} # # Email Configuration (optional - for invitations and notifications) # EMAIL_SMTP: ${EMAIL_SMTP:-False} # EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST:-} # EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT:-587} # EMAIL_SMTP_USER: ${EMAIL_SMTP_USER:-} # EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD:-} # EMAIL_SMTP_USE_TLS: ${EMAIL_SMTP_USE_TLS:-True} # FROM_EMAIL: ${FROM_EMAIL:-noreply@baserow.io} # File Upload Configuration # Use S3-compatible storage (optional - MinIO, AWS S3, etc.) # AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-} # AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-} # AWS_STORAGE_BUCKET_NAME: ${AWS_STORAGE_BUCKET_NAME:-baserow} # AWS_S3_REGION_NAME: ${AWS_S3_REGION_NAME:-us-east-1} # AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL:-} # For MinIO: http://minio:9000 # Advanced Configuration BASEROW_AMOUNT_OF_WORKERS: ${BASEROW_AMOUNT_OF_WORKERS:-1} BASEROW_CELERY_BEAT_DEBUG_LEVEL: ${BASEROW_CELERY_BEAT_DEBUG_LEVEL:-INFO} BASEROW_BACKEND_DEBUG: ${BASEROW_BACKEND_DEBUG:-False} # Feature Flags BASEROW_ENABLE_SECURE_PROXY_SSL_HEADER: ${BASEROW_ENABLE_SECURE_PROXY_SSL_HEADER:-False} BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION: ${BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION:-True} # Webhooks and API BASEROW_WEBHOOKS_MAX_CONSECUTIVE_TRIGGER_FAILURES: ${BASEROW_WEBHOOKS_MAX_CONSECUTIVE_TRIGGER_FAILURES:-8} BASEROW_WEBHOOKS_MAX_RETRIES_PER_CALL: ${BASEROW_WEBHOOKS_MAX_RETRIES_PER_CALL:-8} BASEROW_WEBHOOKS_REQUEST_TIMEOUT_SECONDS: ${BASEROW_WEBHOOKS_REQUEST_TIMEOUT_SECONDS:-5} # Performance Tuning BASEROW_MAX_ROW_REPORT_ERROR_COUNT: ${BASEROW_MAX_ROW_REPORT_ERROR_COUNT:-30} BASEROW_INITIAL_TABLE_DATA_LIMIT: ${BASEROW_INITIAL_TABLE_DATA_LIMIT:-} volumes: - /mnt/flash1/podman/base/data/baserow:/baserow/data networks: - baserow-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost/api/health/"] interval: 30s timeout: 10s retries: 3 # MinIO S3-compatible storage (optional but recommended for production) # Uncomment this section if you want to use MinIO for file storage # minio: # image: minio/minio:latest # container_name: baserow-minio # restart: unless-stopped # command: server /data --console-address ":9001" # environment: # MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} # MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-changeme_minio_password} # volumes: # - minio_data:/data # ports: # - "9000:9000" # S3 API # - "9001:9001" # MinIO Console # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] # interval: 30s # timeout: 20s # retries: 3 # networks: # - baserow-network volumes: postgres_data: driver: local redis_data: driver: local baserow_data: driver: local # minio_data: # driver: local networks: baserow-network: driver: bridge