ממיר Docker Compose ל-docker run

הדביקו קובץ Compose, בחרו service וקבלו את פקודת docker run שמפעילה את אותו קונטיינר. הקובץ נשאר בדפדפן.

נשאר רק בדפדפן שלך. מה שהדבקתם או בחרתם נקרא רק בעמוד הזה. הוא לא נשלח לשרת, לא נשמר בקישור או באחסון הדפדפן, ולעולם לא נכלל ב-analytics.

הדביקו את הטקסט, או בחרו קובץ מהמחשב. עד 512 KiB.

0 מתוך 512 KiB

בכיוון ההפוך: docker run ל-Compose

מה הכלי עושה

הכלי קורא קובץ Compose באותו parser בטוח של Compose Analyzer וכותב service אחד כפקודת docker run, אפשרות אחת בכל שורה: פורטים בתחביר הקצר או הארוך, volumes ו-mounts, משתני סביבה, רשתות עם aliases וכתובות קבועות, health check, מגבלות מ-deploy.resources, לוגים ועוד.

איך זה עובד

  1. הקובץ נקרא עם מגבלות גודל, עומק ו-aliases; שום tag או include של YAML לא נטען.
  2. כל ערך מקבל quoting ל-shell של POSIX. אינטרפולציה של Compose כמו ${DB_PASSWORD:?} הופכת לאותה הרחבה ב-shell, כך שהפקודה קוראת את המשתנה מה-shell שלכם, ו-$$ נשאר $ רגיל.
  3. מאפיינים שאין להם אפשרות ב-docker run (depends_on,‏ build,‏ profiles ורוב deploy) מופיעים כהערות, עם השורה שלהם בקובץ.
  4. הקובץ שלכם נבדק גם ב-Compose Analyzer, באותם כללים של /tools/compose-analyzer.

דוגמה

service עם סוד מ-.env, אחרי המרה:

קלט
docker-compose.yml
services:
  db:
    image: postgres:17
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set it in .env}
    ports:
      - "127.0.0.1:5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {}
פלט
docker run
docker run -d \
  --restart unless-stopped \
  -e POSTGRES_PASSWORD="${POSTGRES_PASSWORD:?Set it in .env}" \
  -p 127.0.0.1:5432:5432 \
  -v pgdata:/var/lib/postgresql/data \
  postgres:17

מגבלות

  • service אחד לכל פקודה. בקובץ עם כמה services מופיעה בחירת service; קשרים ביניהם (depends_on, שמות services) לא עוברים.
  • Compose נותן ל-volumes ולרשתות שמות לפי הפרויקט (<project>_data); הפקודה משתמשת בשם עצמו, אלא אם הקובץ מגדיר name:. כל מקרה כזה מפורט.
  • docker run לא קורא את .env: ייצאו את המשתנים קודם. כאן שום דבר לא רץ.
  • build: לא מומר: בנו את ה-image ותייגו אותו קודם.

מקורות

  1. Docker Docs: Compose file reference
  2. Docker Docs: docker container run
  3. Compose Specification

עודכן

הצעד הבא

Docker Compose Analyzer

כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה