EQVPS

איך לפרוס ערימת Docker Compose על VPS

פרסו ערימה מרובת-קונטיינרים על VPS עם Docker Compose: כתבו docker-compose.yml, שמרו סודות ב-.env, העלו אותה עם הפעלה-מחדש-ב-reboot, ופרסמו רק את הפורטים שאתם מתכוונים. דוגמת העתק-הדבק עם אפליקציית ווב, מסד נתונים ו-reverse proxy.

Docker Compose מתאר ערימה מרובת-קונטיינרים בקובץ אחד ומריץ אותה בפקודה אחת. זה ה-how-to לפריסה; קודם התקינו את Docker אם עוד לא. לערימה ספציפית-לסוכני-AI (סוכן + vector DB + Redis), ראו docker-compose לסוכני AI.

1. ערימה: אפליקציה + מסד נתונים + reverse proxy

# /opt/stack/docker-compose.yml
services:
  app:
    image: your/app:latest
    restart: unless-stopped
    env_file: [.env]
    depends_on: [db]
    # no ports: — reached only through the proxy below

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes: ["pg:/var/lib/postgresql/data"]   # internal only

  caddy:                                        # HTTPS automatically
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]                 # the only public entrypoint
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes: { pg: {}, caddy_data: {} }

הסודות חיים ב-.env, לעולם לא בקובץ ה-compose:

# /opt/stack/.env  (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string

Caddyfile מינימלי מעביר את הדומיין שלכם לאפליקציה ומביא HTTPS בעצמו:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. העלו אותה

cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app

restart: unless-stopped על כל שירות + Docker מופעל ב-boot = הערימה חוזרת אחרי reboot מעצמה.

3. פקודות יומיומיות

docker compose pull && docker compose up -d   # update images
docker compose down                            # stop the stack
docker compose restart app                     # restart one service

החלק שאנשים טועים בו: פורטים חשופים

Docker מפרסם פורטים דרך iptables, אז קונטיינר עם ports: ["5432:5432"] נגיש מהאינטרנט גם מאחורי חומת אש UFW שחשבתם שסגורה. פרסמו רק את נקודת הכניסה הציבורית (ה-proxy על 80/443); שמרו מסדי נתונים ו-caches על רשת ה-compose או קשורים ל-127.0.0.1. כל דבר שמגיש תעבורת ווב צריך תוכנית עם IP ייעודי; שלבו עם חומת אש UFW.

לערימה שלמה מאחורי IP אחד, ראו אחסון עצמי של מספר שירותים. root בערך תוך דקה, NVMe, ללא KYC, שלמו בקריפטו.

שאלות נפוצות

איך אני פורס ערימת Docker Compose על VPS?

התקינו את Docker עם תוסף Compose, כתבו docker-compose.yml שמתאר כל שירות, שמרו סודות ב-.env שמוחרג מ-git, ואז docker compose up -d. הגדירו restart: unless-stopped על כל שירות והפעילו את Docker ב-boot כך שהערימה שורדת reboots. הדוגמה למטה מריצה אפליקציית ווב, Postgres ו-Caddy reverse proxy.

לאן הולכים סודות — לקובץ ה-compose?

לא. שימו אותם בקובץ .env (chmod 600, מוחרג מ-git) והפנו אליהם כ-${VAR} ב-compose, או השתמשו ב-Docker secrets. לעולם אל תכניסו סיסמאות או מפתחות API ל-docker-compose.yml — קובץ שדלף עם אישורים חיים הוא הטעות הקלאסית.

האם הערימה תחזור אחרי reboot?

רק אם תגידו לה. הגדירו restart: unless-stopped (או always) על כל שירות והפעילו את Docker ב-boot (systemctl enable docker). אז docker compose up -d שורד reboots ומפעיל מחדש קונטיינרים שקרסו.

אילו פורטים נחשפים?

רק מה שאתם מפרסמים עם ports:. קשרו שירותים פנימיים (מסדי נתונים, caches) לרשת ה-compose או ל-127.0.0.1 ופרסמו רק את נקודת הכניסה הציבורית — בדרך כלל reverse proxy על 80/443. Docker מפרסם דרך iptables, אז שורת ports: בטעות נגישה מהאינטרנט גם מאחורי UFW.

האם אתם מבקשים תעודה או כרטיס?

לא. אימייל להרשמה, שלמו ב-USDC או USDT — ללא מסמכים, ללא כרטיס. root בערך תוך דקה.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.