@יוסף-בן-שמעון כתב בבקאנד ופרונט - איך לחבר אותם לאחד:
לא מיבעיא אם זה בתוך דוקר, שאז כל מכונה עומדת לעצמה ואני לא רוצה לחבר את ה volumes של המכונות זו לזו
אפרופו דוקר, למה volume? גם בשרת וגם בלקוח לא צריך volumes בכלל, השרת עושה COPY של הקוד בעת הבניה, והלקוח בבניה עושה build ואחרי זה לוקח את הקבצים לקונטיינר חדש עם nginx.
בכלל, volume מיועד לקבצים שצריכים להיות מחוץ לקונטיינר, למשל, תיקיה data שהשרת מעדכן, או קבצים נוספים, אין שום עניין לשים את ה src בתוך ווליום.
ואני ירחיב:
כמו שאומר @dovid, למה לתת לשרת דברים שהוא לא צריך? אבל אני מסכים איתך, שבטח אם הפרוייקט רץ בדוקר זה לא יהיה נוח לתת לnginx גישה לקבצים, והרעיון הכי פשוט זה להשתמש ב docker-compose עם קונטיינר אחד לשרת ואחד לקליינט בו בזמן שהבניה של השרת מורכבת מהעתקה של קבצי הקוד, ביצוע npm i והתקנת תלויות, ובלקוח זה טיפה מעניין יותר, אתה מעתיק את הsrc, עושה build לVue או למה שזה לא יהיה, ואז עושה קונטיינר חדש FROM nginx ומעתיק את הקבצים הסטטיים שנוצרו מהקונטיינר שבנה את הקליינט (זה כזכור לי COPY --from 0 או משהוא כזה) לתוך /var/www/html ומעתיק קובץ config מתאים של nginx.
כמובן שעכשיו יש לך 2 פורטים, אחד ללקוח ואחד לשרת, ובnginx שרץ בשרת עצמו (לא בדוקר) אתה עושה reverse proxy גם לצד שרת וגם לצד לקוח לפי location מתאימים.
ככה אתה יוצא יישום מבוסס דוקר באופן מלא, בלי לתת למערכת הפעלה גישה לקבצים, וגם מאד קל לתפעול בעדכונים, זה למשוך קוד, ו docker-compose build ושלום.
אבל שוב, לדעתי חבל להעסיק את השרת בקבצים הסטטיים.