name: sexy services: postgres: image: postgres:16-alpine container_name: sexy_postgres restart: unless-stopped volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: sexy POSTGRES_USER: sexy POSTGRES_PASSWORD: sexy healthcheck: test: ["CMD-SHELL", "pg_isready -U sexy"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: sexy_redis restart: unless-stopped volumes: - redis_data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 directus: image: directus/directus:11 container_name: sexy_directus restart: unless-stopped ports: - "8055:8055" volumes: - directus_uploads:/directus/uploads - ./packages/bundle:/directus/extensions/sexy.pivoine.art environment: DB_CLIENT: pg DB_HOST: sexy_postgres DB_PORT: 5432 DB_DATABASE: sexy DB_USER: sexy DB_PASSWORD: sexy ADMIN_EMAIL: admin@sexy ADMIN_PASSWORD: admin PUBLIC_URL: http://localhost:3000/api CACHE_ENABLED: true CACHE_AUTO_PURGE: true CACHE_STORE: redis REDIS: redis://sexy_redis:6379 CORS_ENABLED: true CORS_ORIGIN: http://localhost:3000 SESSION_COOKIE_SECURE: false SESSION_COOKIE_SAME_SITE: lax SESSION_COOKIE_DOMAIN: localhost EXTENSIONS_PATH: /directus/extensions EXTENSIONS_AUTO_RELOAD: true WEBSOCKETS_ENABLED: true USER_REGISTER_URL_ALLOW_LIST: http://localhost:3000 PASSWORD_RESET_URL_ALLOW_LIST: http://localhost:3000 TZ: Europe/Amsterdam depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8055/server/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: directus_uploads: driver: local postgres_data: driver: local redis_data: driver: local