ממיר docker run ל-Docker Compose
הדביקו פקודת docker run וקבלו את אותו קונטיינר כ-service של Compose, בדוק ב-Compose Analyzer. שום דבר לא רץ, ושום דבר לא יוצא מהעמוד.
נשאר רק בדפדפן שלך. מה שהדבקתם או בחרתם נקרא רק בעמוד הזה. הוא לא נשלח לשרת, לא נשמר בקישור או באחסון הדפדפן, ולעולם לא נכלל ב-analytics.
הדביקו את הטקסט, או בחרו קובץ מהמחשב. עד 64 KiB.
0 מתוך 64 KiB
מה הכלי עושה
הכלי קורא פקודת docker run אחת כמו ש-CLI של Docker קורא אותה (אפשרויות קצרות וארוכות, ערכים עם =, מירכאות ושבירת שורות עם \) וכותב docker-compose.yml עם service אחד שמפעיל את אותו קונטיינר: פורטים, volumes ו-mounts, משתני סביבה, רשתות, מדיניות restart, משתמש, capabilities, מגבלות משאבים, לוגים ו-health check.
איך זה עובד
- הפקודה מפוצלת למילים כמו ב-shell של POSIX, בלי להריץ או להרחיב דבר. כל מה שהיה מריץ פקודה נוספת (;, &&, |, הפניות, $( ) או backticks) עוצר את ההמרה ומציין את המיקום.
- כל אפשרות ממופה למאפיין של Compose עם אותה השפעה. אפשרויות ש-Compose לא יודע לבטא, ואפשרויות של ה-CLI בלבד כמו --rm ו--d, מופיעות כהערות ולא נעלמות בשקט.
- ערך שהשם או המבנה שלו נראים כמו סוד (PASSWORD, TOKEN, *_KEY, כתובת URL עם סיסמה) מוחלף בהפניה ל-.env, ו-.env.example מפרט את המשתנה ריק. volumes עם שם שומרים על השם שלהם, ורשתות שהפקודה הצטרפה אליהן מוגדרות external.
- אחר כך הקובץ נבדק ב-Compose Analyzer, באותם כללים של /tools/compose-analyzer.
דוגמה
פקודת PostgreSQL מהתיעוד הרשמי של ה-image, אחרי המרה:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
# Converted from a docker run command by ANAROQ (https://anaroq.com/tools/docker-run-to-compose), converter 1.0.0.
# Review it before use. Nothing was run.
services:
some-postgres:
image: "postgres"
container_name: "some-postgres"
environment:
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}"
# Variables of the docker-compose.yml converted by ANAROQ (https://anaroq.com/tools/docker-run-to-compose).
# Copy this file to .env and fill in every value. Never commit .env.
# The docker run command had these values inline; ANAROQ does not copy them here.
# Secret, required.
POSTGRES_PASSWORD=
מגבלות
- פקודה אחת בכל פעם, ורק docker run (או docker container run): לא docker create, לא Podman, לא docker-compose v1 ולא Swarm.
- משתני shell כמו $PWD נשארים משתנים: Compose קורא אותם מהסביבה או מ-.env כשהוא עולה.
- בלי --network, docker run משתמש ברשת ה-bridge של ברירת המחדל; Compose שם את ה-service ברשת של הפרויקט, ולכן קונטיינרים שהופעלו בנפרד לא רואים אותו בשם.
- המרה ובדיקות סטטיות: שום דבר לא עולה, ולכן ה-image, הפורטים והנתיבים לא נבדקים בפועל.
מקורות
קשורים
הצעד הבא
כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה