דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode

עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode

מתוזמן נעוץ נעול הועבר תוכנה
9 פוסטים 4 כותבים 579 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מוטי מןמ מנותק
    מוטי מןמ מנותק
    מוטי מן
    כתב ב נערך לאחרונה על ידי מוטי מן
    #1

    כשהתחלתי לשחק עם הnode הכל היה מצויין, אבל כשניסיתי להשתמש בספריה לתקשורת עם ימות בנוד שמתי לב שגירסת הנוד שלי ישנה, ולא ניתן לשדרג באופן רשמי כי אני באובנטו 18.04, וזה כבר לא נתמך. בינתיים לקחתי שרת אחר מעודכן ועליו אני עובד, אבל זה לא פיתרון קבוע מכל מיני סיבות.

    הבנתי שבעזרת דוקר אני יכול לפתור את הבעיה הזו, וכן בעיות רבות נוספות (החלפת שרת בהמשך וכו'), ולכן אני מנסה לעבוד עם דוקר

    התקנתי דוקר על השרת והרצה של docker run hello-world מציגה Hello from Docker!, היינו שדוקר עובד.

    אבל כעת הסתבכתי ביצירת תמונה שתתאים לפרויקט, לא הבנתי בדיוק איך

    כתבתי את הDockerfile הלז

    FROM node:latest
    
    WORKDIR /app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 8080
    
    CMD ["node", "app.js"]
    
    

    והרצתי

    docker build -t my-node-app
    

    וזה התחיל להוריד כל מיני דברים,עד שקיבלתי שגיאה

    Sending build context to Docker daemon  2.048kB
    Step 1/7 : FROM node:latest
    latest: Pulling from library/node
    b66b4ecd3ecf: Pull complete
    6c641d36985b: Pull complete
    ddd8544b6e15: Pull complete
    ae58c7c06d64: Pull complete
    5d0523b85d8e: Pull complete
    c3c98e94c35b: Pull complete
    927781e1b0ca: Pull complete
    b715c27f2c58: Pull complete
    Digest: sha256:73a9c498369c6e6f864359979c8f4895f28323c07411605e6c870d696a0143fa
    Status: Downloaded newer image for node:latest
     ---> fc9a8ab9999e
    Step 2/7 : WORKDIR /app
     ---> Running in e3c1cbcc4be8
    Removing intermediate container e3c1cbcc4be8
     ---> de03e0aebd8b
    Step 3/7 : COPY package.json .
    COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
    

    ואז הבנתי, שבעצם אין לי מושג מה אני צריך לכלול בDockerfile כדי שהוא יתאים לי, האם אני צריך להתקין מראש את האקספרס ושאר מודולי הנוד שארצה להשתמש בהם? איך אני מוסיף ועורך את הקבצי js בתמונת הדוקר?

    dovidD תגובה 1 תגובה אחרונה
    0
    • מוטי מןמ מוטי מן

      כשהתחלתי לשחק עם הnode הכל היה מצויין, אבל כשניסיתי להשתמש בספריה לתקשורת עם ימות בנוד שמתי לב שגירסת הנוד שלי ישנה, ולא ניתן לשדרג באופן רשמי כי אני באובנטו 18.04, וזה כבר לא נתמך. בינתיים לקחתי שרת אחר מעודכן ועליו אני עובד, אבל זה לא פיתרון קבוע מכל מיני סיבות.

      הבנתי שבעזרת דוקר אני יכול לפתור את הבעיה הזו, וכן בעיות רבות נוספות (החלפת שרת בהמשך וכו'), ולכן אני מנסה לעבוד עם דוקר

      התקנתי דוקר על השרת והרצה של docker run hello-world מציגה Hello from Docker!, היינו שדוקר עובד.

      אבל כעת הסתבכתי ביצירת תמונה שתתאים לפרויקט, לא הבנתי בדיוק איך

      כתבתי את הDockerfile הלז

      FROM node:latest
      
      WORKDIR /app
      
      COPY package.json .
      
      RUN npm install
      
      COPY . .
      
      EXPOSE 8080
      
      CMD ["node", "app.js"]
      
      

      והרצתי

      docker build -t my-node-app
      

      וזה התחיל להוריד כל מיני דברים,עד שקיבלתי שגיאה

      Sending build context to Docker daemon  2.048kB
      Step 1/7 : FROM node:latest
      latest: Pulling from library/node
      b66b4ecd3ecf: Pull complete
      6c641d36985b: Pull complete
      ddd8544b6e15: Pull complete
      ae58c7c06d64: Pull complete
      5d0523b85d8e: Pull complete
      c3c98e94c35b: Pull complete
      927781e1b0ca: Pull complete
      b715c27f2c58: Pull complete
      Digest: sha256:73a9c498369c6e6f864359979c8f4895f28323c07411605e6c870d696a0143fa
      Status: Downloaded newer image for node:latest
       ---> fc9a8ab9999e
      Step 2/7 : WORKDIR /app
       ---> Running in e3c1cbcc4be8
      Removing intermediate container e3c1cbcc4be8
       ---> de03e0aebd8b
      Step 3/7 : COPY package.json .
      COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
      

      ואז הבנתי, שבעצם אין לי מושג מה אני צריך לכלול בDockerfile כדי שהוא יתאים לי, האם אני צריך להתקין מראש את האקספרס ושאר מודולי הנוד שארצה להשתמש בהם? איך אני מוסיף ועורך את הקבצי js בתמונת הדוקר?

      dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

      ולא ניתן לשדרג באופן רשמי כי אני באובנטו 18.04

      נוד תמיד מתקינים חיצונית ולא ממנהל החבילות (זה כדאי גם למשל לmysql, שהמנהל חבילות תקוע עשר שנים אחורה).
      ממילא למיטב זכרוני הבעיה הזאת לא קיימת.

      וזה התחיל להוריד כל מיני דברים,עד שקיבלתי שגיאה

      השורות הרלוונטיות הם אלו:

      Step 3/7 : COPY package.json .
      COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
      

      בדוקר שלך כתוב פקודה להעתיק את הקובץ package.json שנמצא באותה תיקיה של הdockerfile אולם הוא לא קיים שמה.

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      מוטי מןמ A0533057932A 2 תגובות תגובה אחרונה
      0
      • dovidD dovid

        @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

        ולא ניתן לשדרג באופן רשמי כי אני באובנטו 18.04

        נוד תמיד מתקינים חיצונית ולא ממנהל החבילות (זה כדאי גם למשל לmysql, שהמנהל חבילות תקוע עשר שנים אחורה).
        ממילא למיטב זכרוני הבעיה הזאת לא קיימת.

        וזה התחיל להוריד כל מיני דברים,עד שקיבלתי שגיאה

        השורות הרלוונטיות הם אלו:

        Step 3/7 : COPY package.json .
        COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
        

        בדוקר שלך כתוב פקודה להעתיק את הקובץ package.json שנמצא באותה תיקיה של הdockerfile אולם הוא לא קיים שמה.

        מוטי מןמ מנותק
        מוטי מןמ מנותק
        מוטי מן
        כתב ב נערך לאחרונה על ידי
        #3

        @dovid כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

        הקובץ package.json

        מה זה בדיוק הקובץ הזה? הpackage.json של הנוד?

        תגובה 1 תגובה אחרונה
        0
        • dovidD dovid

          @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

          ולא ניתן לשדרג באופן רשמי כי אני באובנטו 18.04

          נוד תמיד מתקינים חיצונית ולא ממנהל החבילות (זה כדאי גם למשל לmysql, שהמנהל חבילות תקוע עשר שנים אחורה).
          ממילא למיטב זכרוני הבעיה הזאת לא קיימת.

          וזה התחיל להוריד כל מיני דברים,עד שקיבלתי שגיאה

          השורות הרלוונטיות הם אלו:

          Step 3/7 : COPY package.json .
          COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
          

          בדוקר שלך כתוב פקודה להעתיק את הקובץ package.json שנמצא באותה תיקיה של הdockerfile אולם הוא לא קיים שמה.

          A0533057932A מנותק
          A0533057932A מנותק
          A0533057932
          כתב ב נערך לאחרונה על ידי A0533057932
          #4

          @dovid כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

          נוד תמיד מתקינים חיצונית ולא ממנהל החבילות (זה כדאי גם למשל לmysql, שהמנהל חבילות תקוע עשר שנים אחורה).

          כמדומני שהשתנו ההוראות בזמן האחרון
          כבר לא כך

          curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
          sudo apt-get install -y nodejs
          

          אלא כך

          sudo apt-get update
          sudo apt-get install -y ca-certificates curl gnupg
          sudo mkdir -p /etc/apt/keyrings
          curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
          NODE_MAJOR=20
          echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
          sudo apt-get update
          sudo apt-get install nodejs -y
          

          כבר לא סקריפט מתקין את זה
          או שכוונתך לדרך שלישית?

          כי בחיפוש מהיר נראה שאמנם יש פתרונות
          אבל NODE הרשמי לא נתמך

          תגובה 1 תגובה אחרונה
          2
          • dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #5

            @A0533057932 אני טעיתי זה אכן נראה לא נתמך.
            כוונתי הייתה שבשתי הדרכים שהראית זה חבילה ממקור חיצוני ולא ממנהל החבילות של אובנטו,
            הnodejs של מנהל החבילות הרשמי הוא זה
            https://packages.ubuntu.com/focal/nodejs
            וזה נדמה לי נוד 10.

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            מוטי מןמ תגובה 1 תגובה אחרונה
            1
            • dovidD dovid

              @A0533057932 אני טעיתי זה אכן נראה לא נתמך.
              כוונתי הייתה שבשתי הדרכים שהראית זה חבילה ממקור חיצוני ולא ממנהל החבילות של אובנטו,
              הnodejs של מנהל החבילות הרשמי הוא זה
              https://packages.ubuntu.com/focal/nodejs
              וזה נדמה לי נוד 10.

              מוטי מןמ מנותק
              מוטי מןמ מנותק
              מוטי מן
              כתב ב נערך לאחרונה על ידי
              #6

              @dovid כעת הצלחתי להתקין נוד נוסף ממנהל חבילות אחר, והוא גירסה 14,שכן תומכת בECMA6, וכעת אני מצליח להריץ את הקוד.

              עדיין, אני מעוניין לדעת איך להריץ את זה בדוקר, כי הבנתי שיש לזה עוד כמה מעלות מלבד פיתרון לבעיה המקורית.

              הדוקר מותקן ועובד

              ubuntu@moti-16-12:/var/www/node$ docker -v
              Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3
              

              המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ, והאם או כיצד היא צריכה להכיל את קבצי הפרויקט, ומה אני עושה אם יש קבצים שמשתנים תוך כדי ריצה, כיצד השינויים נשמרים גם לאחר כיבוי המיכל.

              צבי-שצ תגובה 1 תגובה אחרונה
              0
              • מוטי מןמ מוטי מן

                @dovid כעת הצלחתי להתקין נוד נוסף ממנהל חבילות אחר, והוא גירסה 14,שכן תומכת בECMA6, וכעת אני מצליח להריץ את הקוד.

                עדיין, אני מעוניין לדעת איך להריץ את זה בדוקר, כי הבנתי שיש לזה עוד כמה מעלות מלבד פיתרון לבעיה המקורית.

                הדוקר מותקן ועובד

                ubuntu@moti-16-12:/var/www/node$ docker -v
                Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3
                

                המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ, והאם או כיצד היא צריכה להכיל את קבצי הפרויקט, ומה אני עושה אם יש קבצים שמשתנים תוך כדי ריצה, כיצד השינויים נשמרים גם לאחר כיבוי המיכל.

                צבי-שצ מחובר
                צבי-שצ מחובר
                צבי-ש
                כתב ב נערך לאחרונה על ידי
                #7

                @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ,

                מה הסתבכת?

                והאם או כיצד היא צריכה להכיל את קבצי הפרויקט,

                תלוי בצורך, לרוב אתה עושה פשוט copy לבפנים,
                כמו פה בשורה 3 שזה מעביר את כל התיקייה
                או כמו בשורה 4 אתה מעתיק רק את קובץ app.js,

                FROM node:18-alpine
                WORKDIR /app
                COPY . .
                COPY app.js app.js
                RUN yarn install --production
                CMD ["node", "src/index.js"]
                EXPOSE 3000
                

                ומה אני עושה אם יש קבצים שמשתנים תוך כדי ריצה, כיצד השינויים נשמרים גם לאחר כיבוי המיכל.

                אתה צריך להגדיר Volume תיעוד שבעצם גורם לשיתוף בין תיקייה לוקאלית אצלך, לבין תיקייה בקונטיינר, ואז אם תשמור שם קבצים, זה יישמר לאחרי זה.

                כיף לגלות דברים חדשים.
                חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

                מוטי מןמ תגובה 1 תגובה אחרונה
                0
                • צבי-שצ צבי-ש

                  @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                  המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ,

                  מה הסתבכת?

                  והאם או כיצד היא צריכה להכיל את קבצי הפרויקט,

                  תלוי בצורך, לרוב אתה עושה פשוט copy לבפנים,
                  כמו פה בשורה 3 שזה מעביר את כל התיקייה
                  או כמו בשורה 4 אתה מעתיק רק את קובץ app.js,

                  FROM node:18-alpine
                  WORKDIR /app
                  COPY . .
                  COPY app.js app.js
                  RUN yarn install --production
                  CMD ["node", "src/index.js"]
                  EXPOSE 3000
                  

                  ומה אני עושה אם יש קבצים שמשתנים תוך כדי ריצה, כיצד השינויים נשמרים גם לאחר כיבוי המיכל.

                  אתה צריך להגדיר Volume תיעוד שבעצם גורם לשיתוף בין תיקייה לוקאלית אצלך, לבין תיקייה בקונטיינר, ואז אם תשמור שם קבצים, זה יישמר לאחרי זה.

                  מוטי מןמ מנותק
                  מוטי מןמ מנותק
                  מוטי מן
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @צבי-ש כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                  המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ,

                  מה הסתבכת?

                  אם אני רוצה להפעיל nodejs שמשתמש במודול כמו אקספרס והספריה לימות המשיח ועוד כמה, איך אני בוחר/יוצר את האימאג' שממנו אריץ את הקונטיינר? זה צריך לכלול רק נוד, או שגם את המודולים שאני רוצה להשתמש בהם?

                  צבי-שצ תגובה 1 תגובה אחרונה
                  0
                  • מוטי מןמ מוטי מן

                    @צבי-ש כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                    המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ,

                    מה הסתבכת?

                    אם אני רוצה להפעיל nodejs שמשתמש במודול כמו אקספרס והספריה לימות המשיח ועוד כמה, איך אני בוחר/יוצר את האימאג' שממנו אריץ את הקונטיינר? זה צריך לכלול רק נוד, או שגם את המודולים שאני רוצה להשתמש בהם?

                    צבי-שצ מחובר
                    צבי-שצ מחובר
                    צבי-ש
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @מוטי-מן כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                    @צבי-ש כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

                    המקום שבו הסתבכתי זה בהפעלה/יצירת התמונת דוקר שאותה אני אוכל להריץ,

                    מה הסתבכת?

                    אם אני רוצה להפעיל nodejs שמשתמש במודול כמו אקספרס והספריה לימות המשיח ועוד כמה, איך אני בוחר/יוצר את האימאג' שממנו אריץ את הקונטיינר? זה צריך לכלול רק נוד, או שגם את המודולים שאני רוצה להשתמש בהם?

                    dockerfile הוא הקובץ שאחראי על היצירה.
                    אתה יכול לציין מפורש בתוכו להתקין מספר ספריות, או להכין מראש קובץ package.json עם הספריות, ואז להכין קובץ כזה למשל

                    FROM node:18
                    
                    WORKDIR /app
                    
                    COPY package.json /app
                    
                    RUN npm install
                    

                    אתה נותן לו פקודת COPY
                    ואחרי שהקובץ בפנים, אתה עושה npm install והוא מתקין את הכל.

                    תוכל גם לעשות ככה למשל

                    RUN npm install express
                    

                    בשביל להתקין את express

                    כיף לגלות דברים חדשים.
                    חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

                    תגובה 1 תגובה אחרונה
                    0
                    תגובה
                    • תגובה כנושא
                    התחברו כדי לפרסם תגובה
                    • מהישן לחדש
                    • מהחדש לישן
                    • הכי הרבה הצבעות


                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום