ממיר Docker Compose ל-docker run
הדביקו קובץ Compose, בחרו service וקבלו את פקודת docker run שמפעילה את אותו קונטיינר. הקובץ נשאר בדפדפן.
נשאר רק בדפדפן שלך. מה שהדבקתם או בחרתם נקרא רק בעמוד הזה. הוא לא נשלח לשרת, לא נשמר בקישור או באחסון הדפדפן, ולעולם לא נכלל ב-analytics.
הדביקו את הטקסט, או בחרו קובץ מהמחשב. עד 512 KiB.
0 מתוך 512 KiB
מה הכלי עושה
הכלי קורא קובץ Compose באותו parser בטוח של Compose Analyzer וכותב service אחד כפקודת docker run, אפשרות אחת בכל שורה: פורטים בתחביר הקצר או הארוך, volumes ו-mounts, משתני סביבה, רשתות עם aliases וכתובות קבועות, health check, מגבלות מ-deploy.resources, לוגים ועוד.
איך זה עובד
- הקובץ נקרא עם מגבלות גודל, עומק ו-aliases; שום tag או include של YAML לא נטען.
- כל ערך מקבל quoting ל-shell של POSIX. אינטרפולציה של Compose כמו ${DB_PASSWORD:?} הופכת לאותה הרחבה ב-shell, כך שהפקודה קוראת את המשתנה מה-shell שלכם, ו-$$ נשאר $ רגיל.
- מאפיינים שאין להם אפשרות ב-docker run (depends_on, build, profiles ורוב deploy) מופיעים כהערות, עם השורה שלהם בקובץ.
- הקובץ שלכם נבדק גם ב-Compose Analyzer, באותם כללים של /tools/compose-analyzer.
דוגמה
service עם סוד מ-.env, אחרי המרה:
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 -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 ותייגו אותו קודם.
מקורות
קשורים
הצעד הבא
כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה