תארו לעצמכם: פרסתם את Directus באמצעות npx, קיבלתם במהירות פאנל ניהול, אבל חודש לאחר מכן, עם תעבורה מוגברת, האתר קרס בגלל חוסר במטמון — וקבצי המדיה אבדו בכשל דיסק. בדיוק מצבים אלה דוחפים אתכם לפריסה פרודקשן עם Docker, PostgreSQL ו-S3. מאמר זה מספק תבנית הגדרה מוכחת שבה אנו משתמשים בפרויקטים רבים, מפורטלים ארגוניים ועד APIs בעומס גבוה. Directus הוא CMS ללא ראש המספק REST ו-GraphQL APIs תוך כדי תנועה, ללא יצירה. לפי בדיקות, מהירות תגובת ה-API גבוהה פי 2–3 מאשר Strapi, בזכות היעדר שכבות ORM. לפרודקשן אנו תמיד משתמשים ב-Docker — הוא מבטיח בידוד, שחזוריות וסקיילינג קל.
למה לבחור ב-Directus לפרודקשן?
Directus הוא לא רק עוד CMS. זוהי פלטפורמה ללא ראש המספקת REST ו-GraphQL APIs תוך כדי תנועה, ללא יצירה. אתם משתלבים בכל מסד נתונים קיים — ללא צורך בהגירת נתונים. לפי ביקורות, מהירות הפיתוח מוכפלת בהשוואה ל-CMS מסורתי. לאחרונה פרסנו את Directus עבור חנות מקוונת גדולה עם קטלוג של 50,000 מוצרים. לאחר מעבר מ-WordPress ל-Directus, זמן טעינת דף הקטלוג ירד מ-3 שניות ל-400 אלפיות השנייה בזכות מטמון Redis ו-SSR על Nuxt 3. זו דוגמה אמיתית: מהירות ה-API גדלה פי 3, ועלויות התשתית ירדו בזכות נטישת המונולית. קבלו ייעוץ מהנדס לבחירת CMS ללא ראש לפרויקט שלכם.
איך לפרוס את Directus לפרודקשן עם Docker?
התהליך כולל חמישה שלבים חובה:
- סקירת משימה — קביעת עומס, נפח תוכן, דרישות API.
- בחירת מחסנית — Docker + PostgreSQL + S3 (או Cloudflare R2 לאחסון זול).
- פריסה — כתיבת
docker-compose.yml, הגדרת Redis למטמון, חיבור CDN. - הגדרת סביבה — SECRET, CORS, דוא"ל, משתני אחסון.
- מסירה סופית — תיעוד, אישורי גישה, הדרכת צוות.
התחלה מהירה: דרך npx
npx create-directus-project@latest my-directus
# Вопросы:
# Database: PostgreSQL
# Host: localhost
# Port: 5432
# Database name: directus
# Username: directus
# Password: ...
# Admin email: [email protected]
# Admin password: ...
cd my-directus
npx directus startשיטה זו מתאימה לפיתוח, אך לא לפרודקשן — ללא בידוד, קשה לסקל.
פריסת Docker (מומלץ)
דוגמה מוכנה npx create-directus-project@latest my-directus # Вопросы: # Database: PostgreSQL # Host: localhost # Port: 5432 # Database name: directus # Username: directus # Password: ... # Admin email: [email protected] # Admin password: ... cd my-directus npx directus start :
---
version: '3'
services:
directus:
image: directus/directus:10.latest
restart: unless-stopped
ports:
- "8055:8055"
volumes:
- ./uploads:/directus/uploads
- ./extensions:/directus/extensions
environment:
SECRET: ${SECRET}
DB_CLIENT: pg
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
ADMIN_EMAIL: ${ADMIN_EMAIL}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
PUBLIC_URL: https://cms.example.com
CORS_ENABLED: true
CORS_ORIGIN: https://example.com
CACHE_ENABLED: true
CACHE_STORE: redis
REDIS_HOST: redis
REDIS_PORT: 6379
STORAGE_LOCATIONS: local
STORAGE_LOCAL_DRIVER: local
STORAGE_LOCAL_ROOT: /directus/uploads
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 10s
redis:
image: redis:alpine
restart: unless-stopped
volumes:
postgres_data:
---
איך להגדיר אחסון ומטמון?
אחסון S3
לפרודקשן, השתמשו תמיד באחסון חיצוני. דוגמה למשתנים:
STORAGE_LOCATIONS=s3
STORAGE_S3_DRIVER=s3
STORAGE_S3_KEY=ACCESS_KEY
STORAGE_S3_SECRET=SECRET_KEY
STORAGE_S3_BUCKET=my-bucket
STORAGE_S3_REGION=eu-west-1
STORAGE_S3_ENDPOINT=https://s3.amazonaws.com
# Для Cloudflare R2:
# STORAGE_S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
# STORAGE_S3_REGION=autoהשוואת אחסון:
| אחסון | מחיר (ל-1 TB לחודש) | ביצועים | תפוצה גיאוגרפית |
|---|---|---|---|
| S3 | ~$23 | גבוהים | כן |
| Cloudflare R2 | ~$0 (ללא יציאה) | גבוהים | כן |
| דיסק מקומי | חינם | נמוכים | לא |
הזמינו הגדרת אחסון מותאמת אישית — נבחר את האפשרות האופטימלית לפרויקט שלכם.
מטמון עם Redis
Redis הוא חובה לפרודקשן: מטמון מפחית את עומס מסד הנתונים ב-60–80%. ההגדרה כבר כלולה ב-docker-compose.yml. בנוסף, ניתן להגדיר version: '3' services: directus: image: directus/directus:10.latest restart: unless-stopped ports: - "8055:8055" volumes: - ./uploads:/directus/uploads - ./extensions:/directus/extensions environment: SECRET: ${SECRET} DB_CLIENT: pg DB_HOST: postgres DB_PORT: 5432 DB_DATABASE: ${DB_NAME} DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} ADMIN_EMAIL: ${ADMIN_EMAIL} ADMIN_PASSWORD: ${ADMIN_PASSWORD} PUBLIC_URL: https://cms.example.com CORS_ENABLED: true CORS_ORIGIN: https://example.com CACHE_ENABLED: true CACHE_STORE: redis REDIS_HOST: redis REDIS_PORT: 6379 STORAGE_LOCATIONS: local STORAGE_LOCAL_DRIVER: local STORAGE_LOCAL_ROOT: /directus/uploads depends_on: postgres: condition: service_healthy postgres: image: postgres:15-alpine restart: unless-stopped environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"] interval: 10s redis: image: redis:alpine restart: unless-stopped volumes: postgres_data: (ברירת מחדל 5 דקות). לעומסים גבוהים, השתמשו ב-Redis Cluster. ה-Cluster דורש מספר צמתים — זה מספק סקיילינג אופקי וסובלנות לתקלות.
| פרמטר | ערך | תיאור |
|---|---|---|
| CACHE_TTL | 300 | זמן חיים של מטמון בשניות |
| CACHE_STORE | redis | סוג אחסון |
| REDIS_HOST | redis | מארח Redis |
אילו בעיות Directus פותר?
Directus פותר את בעיית חיבור הקצה האחורי לקצה הקדמי על ידי מתן API גמיש. הוא שימושי במיוחד כאשר צריך להשיק מוצר במהירות עם מבני נתונים מותאמים אישית. לדוגמה, עבור מרקטפלייס עם סוגי מוצרים שונים, אין צורך לכתוב בקרים נפרדים — Directus יוצר נקודות קצה אוטומטית.
טעויות נפוצות בהתקנת Directus
- שימוש ב-npm ללא Docker — בעיות בסקיילינג ועדכונים.
- דילוג על הגדרת CORS — שגיאות CORS בקצה הקדמי.
- אחסון מדיה במערכת קבצים מקומית — אובדן נתונים בכשל דיסק.
- ללא מטמון — תגובת API איטית ב-100+ בקשות בשנייה.
- יצירת SECRET שגויה — פגיעות להתקפות CSRF.
- ללא ניטור — בעיות ביצועים לא מורגשות.
מה כלול בשירות הגדרת Directus?
במסגרת השירות, אתם מקבלים:
- מחסנית פרודקשן מוגדרת במלואה: Docker, PostgreSQL, Redis, S3.
- הגדרה מותאמת לעומס שלכם (איזון עומסים, CDN).
- תיעוד פריסה ותחזוקה.
- גישה לפאנל ניהול, אסימוני API.
- הדרכת צוות (שעתיים אונליין).
- שבועיים של תמיכה לאחר ההשקה.
סט זה מכסה 90% מהפרויקטים הטיפוסיים. עבור לא סטנדרטיים, ביקורת אישית.
לוחות זמנים ועלות
הגדרה בסיסית עם Docker, PostgreSQL, S3 והגדרה בסיסית אורכת 2 עד 4 שעות. פרויקטים מורכבים (הרחבות מותאמות אישית, SSO, הגירת נתונים) אורכים 1 עד 5 ימים. העלות נקבעת באופן אישי לאחר ביקורת. קבלו ייעוץ מהנדס — נעריך את הפרויקט שלכם תוך יום אחד. צרו קשר כדי לדון בפרטים.







