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

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

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

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

מתוזמן נעוץ נעול הועבר תוכנה
9 פוסטים 4 כותבים 571 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מוטי מןמ מנותק
    מוטי מןמ מנותק
    מוטי מן
    כתב ב נערך לאחרונה על ידי מוטי מן
    #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
    • 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
      • מוטי מןמ מנותק
        מוטי מןמ מנותק
        מוטי מן
        השיב לdovid ב נערך לאחרונה על ידי
        #3

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

        הקובץ package.json

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

        תגובה 1 תגובה אחרונה
        0
        • A0533057932A מנותק
          A0533057932A מנותק
          A0533057932
          השיב לdovid ב נערך לאחרונה על ידי 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
            • מוטי מןמ מנותק
              מוטי מןמ מנותק
              מוטי מן
              השיב לdovid ב נערך לאחרונה על ידי
              #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
              • צבי-שצ מחובר
                צבי-שצ מחובר
                צבי-ש
                השיב למוטי מן ב נערך לאחרונה על ידי
                #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
                • מוטי מןמ מנותק
                  מוטי מןמ מנותק
                  מוטי מן
                  השיב לצבי-ש ב נערך לאחרונה על ידי
                  #8

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

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

                  מה הסתבכת?

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

                  צבי-שצ תגובה 1 תגובה אחרונה
                  0
                  • צבי-שצ מחובר
                    צבי-שצ מחובר
                    צבי-ש
                    השיב למוטי מן ב נערך לאחרונה על ידי
                    #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
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום