# documentation: https://help.teable.io/ # slogan: Teable is a powerful visual interface built on relational databases (PostgreSQL). # tags: airtable, teable, database, visual, interface, relational, postgresql # logo: svgs/teable.png # port: 3000 version: '3.9' services: teable: image: 'ghcr.io/teableio/teable:latest' volumes: - 'teable-data:/app/.assets:rw' environment: - SERVICE_FQDN_TEABLE_3000 - 'PUBLIC_ORIGIN=${SERVICE_FQDN_TEABLE}' - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' - 'SECRET_KEY=${SERVICE_PASSWORD_64_SECRET}' - 'TZ=${TIMEZONE}' - 'PRISMA_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@teable-db:${POSTGRES_PORT}/${POSTGRES_DB}' - NEXT_ENV_IMAGES_ALL_REMOTE=true - PORT=3000 - 'REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}' - BACKEND_CACHE_PROVIDER=redis - 'BACKEND_CACHE_REDIS_URI=redis://default:${SERVICE_PASSWORD_REDIS}@teable-cache:6379/0' depends_on: teable-cache: condition: service_healthy healthcheck: test: - CMD - curl - '-f' - 'http://127.0.0.1:3000' interval: 5s timeout: 20s retries: 10 teable-db: image: 'postgres:15.4' volumes: - 'teable-db:/var/lib/postgresql/data:rw' environment: - 'TZ=${TIMEZONE}' - 'POSTGRES_DB=${POSTGRES_DB:-teable}' - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' - 'POSTGRES_PORT=${POSTGRES_PORT:-5432}' healthcheck: test: - CMD-SHELL - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' interval: 5s timeout: 20s retries: 10 teable-db-migrate: image: 'ghcr.io/teableio/teable-db-migrate:latest' restart: 'no' environment: - 'TZ=${TIMEZONE}' - 'PRISMA_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@teable-db:${POSTGRES_PORT}/${POSTGRES_DB}' depends_on: teable-db: condition: service_healthy teable-cache: image: 'redis:7.2.4' environment: - REDIS_PORT=6379 - REDIS_DB=0 - 'REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS}' volumes: - 'teable-cache:/data:rw' command: 'redis-server --appendonly yes --requirepass ${SERVICE_PASSWORD_REDIS}' healthcheck: test: - CMD - redis-cli - '--raw' - incr - ping interval: 10s timeout: 3s retries: 3