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

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

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

פיתוח אפליקציית אנטרנט + מסד נתונים בדוקר

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 3 כותבים 354 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צבי-שצ צבי-ש

    @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    בכוונה לא הוספת את index.js? לכאורה גם הוא אמור להיות בפנים, לא?

    בשלב מאוחר יותר ב dockerfile העתקתי אותו

    COPY . .  
    

    זה בעצם מעתיק את הכל,

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

    @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    לאיפה? לכתובת הIP של השרת ואז יהיה אפשר להגיע לקבצים האלו דרך פורט 8080 ו8090?

    אחרי שאתה מפעיל אותם, הם רצים על השרת בפורט הזה, אם אין חומת אש הם נגישים כרגע ב ip:8080 או ip:8090, אם יש חומת אש אז תפנה לפורטים האלו דומיין כדי שיוכלו להגיע מבחוץ קריאות

    @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    למה צריך גם מריה וגם phpmyadmin? הphpmyadmin לא כולל גם מסד נתונים?

    לא, הוא רק תצוגה

    @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    כל פעם שאני מוסיף קובץ ל"אפליקציה" צריך להוסיף אותו גם בcopy בdockerfile או שדרך הvolume זה מתווסף לבד?

    בעיקרון הווליום נועד יותר לחלקים בתמונה שדורשים נתונים בחוץ, למשל מיקום שמירה של קבצי הdb או הורדות או קבצים שאתה רוצה לשתף בין כמה קונטיינרים וכדומה
    אפשר טכנית לא להעתיק את כל הפרויקט אלא לשים דוקר לworkfolder הראשי, אבל זה פחות מומלץ, בכל מקרה את קובץ ההרצה עצמו (index.js) ואת קבצי התלויות תצטרך להעתיק בשביל שהבניה עצמה לא תקרוס.

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

    @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    יש הבדל בין פרודקשן לפיתוח?

    באיזה הקשר?

    E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי eido
    #5

    @צבי-ש כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

    באיזה הקשר?

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

    איך מעבירים את מבנה הטבלאות, אם בעצם מורידים את המריה ישירות מהמאגר? ואם רוצים שיגיעו טבלאות עם שורות כבר?

    צבי-שצ A0533057932A 2 תגובות תגובה אחרונה
    0
    • E eido

      @צבי-ש כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

      באיזה הקשר?

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

      איך מעבירים את מבנה הטבלאות, אם בעצם מורידים את המריה ישירות מהמאגר? ואם רוצים שיגיעו טבלאות עם שורות כבר?

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

      @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

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

      לא מכיר משהו ברמת הדוקר עצמו, אולי ברמת פיתוח האפליקציה עצמה למשל cors או token וכדומה שתרצה להגדיר מן הסתם בקובץ env (או בחלק env שבדוקר קומפוז) למשל

          environment:
            DEBUG: "true"
      

      @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

      איך מעבירים את מבנה הטבלאות, אם בעצם מורידים את המריה ישירות מהמאגר? ואם רוצים שיגיעו טבלאות עם שורות כבר?

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

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

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

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

      E תגובה 1 תגובה אחרונה
      2
      • צבי-שצ צבי-ש

        @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

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

        לא מכיר משהו ברמת הדוקר עצמו, אולי ברמת פיתוח האפליקציה עצמה למשל cors או token וכדומה שתרצה להגדיר מן הסתם בקובץ env (או בחלק env שבדוקר קומפוז) למשל

            environment:
              DEBUG: "true"
        

        @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

        איך מעבירים את מבנה הטבלאות, אם בעצם מורידים את המריה ישירות מהמאגר? ואם רוצים שיגיעו טבלאות עם שורות כבר?

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

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

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

        E מנותק
        E מנותק
        eido
        כתב נערך לאחרונה על ידי eido
        #7

        @צבי-ש אז אם יש כמה קונטיינרים, צריך לפתוח הרבה פורטים? או שיש דרך לטפל בזה?
        ומה זה ה8090:8080 שכתבת?

        צבי-שצ תגובה 1 תגובה אחרונה
        0
        • E eido

          @צבי-ש אז אם יש כמה קונטיינרים, צריך לפתוח הרבה פורטים? או שיש דרך לטפל בזה?
          ומה זה ה8090:8080 שכתבת?

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

          @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

          @צבי-ש אז אם יש כמה קונטיינרים, צריך לפתוח הרבה פורטים? או שיש דרך לטפל בזה?

          כל שירות שמקבל קריאות, רץ על פורט אחר

          ומה זה ה8090:8080 שכתבת?

          בקונטיינר עצמו יש 65k פורטים אפשריים וכנ״ל בשרת החיצוני
          ויש מיפוי בינהם שאומר תעביר את כל הקריאות בשרת שמגיעות אל 8090 אל הקונטיינר בפורט 8080

          ports:
            - "8090:8080"
          

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

          תגובה 1 תגובה אחרונה
          1
          • E eido

            @צבי-ש כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

            באיזה הקשר?

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

            איך מעבירים את מבנה הטבלאות, אם בעצם מורידים את המריה ישירות מהמאגר? ואם רוצים שיגיעו טבלאות עם שורות כבר?

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

            @eido כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

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

            אתה מנהל שני קבצי ריקווימנטס
            ומעתיק לדוקר רק את קובץ הפרודקשן

            תגובה 1 תגובה אחרונה
            1
            • צבי-שצ צבי-ש

              שבוע טוב!

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

              דוקר היא מעיין תמונה של מכונה וירטואלית שיודעת להריץ ״מצב מסויים״ (לא בדיוק, זה יותר תהליך שרץ בסביבה מבודדת אבל זה עוזר להבנה)

              ישנם תמונות מוכנות שאנשים העלו כבר לרשת בדרך כלל אל https://hub.docker.com וישנם תמונות שאתה יוצר לבד

              למשל את phpmyadmin תוכל להתקין ישירות מכאן.

              בשביל ליצור תמונה משל עצמך, אתה יוצר קובץ בשם Dockefile ושם מגדיר לו מספר דברים.

              1. על בסיס של איזה מכונה לרוץ (node, python, php, ubunto וכדומה)
              2. איזה קבצים להכניס בפנים
              3. איזה תלויות להתקין
              4. עוד כמה הגדרות שאתה יכול להגדיר שם למשל איזה פורטים להוציא החוצה, איזה סקריפט להריץ בסיום וכדומה
                ואז אתה מפעיל את התמונה

              למשל במבנה תיקיות כזה

              .
              └── mynodejscode
                  ├── package.json
                  ├── package-lock.json
                  └── index.js
              

              נניח שה index.js שלך הוא שרת אקספרסס שמאזין על פורט 8080

              אנחנו נרצה להוסיף מכונה ש

              1. בנויה על בסיס nodejs
              2. תעתיק את הקובץ package.json ואת package-lock.json
              3. תריץ בפנים npm i
              4. אחרי זה תריץ את index.js כי זה תכלס הקוד שלנו

              הקובץ Dockerfile שלנו יראה בערך ככה

              FROM node:20-alpine
              
              WORKDIR /app
              
              COPY package*.json ./
              RUN npm install 
              
              COPY . .
              
              CMD ["node", "index.js"]
              
              

              עכשיו נעבור לדרך שבה נהוג לנהל מספר Dockerים שרצים ביחד ושייכים לאותו פרויקט (כמו אצלינו שאתה צריך שה nodejs ירוץ עם db + phpmyadmin

              יש תוכנה בשם docker compose שיודעת לקחת yml מסודר ולהריץ איתו מספר פרויקטים ביחד.
              (יש לה מספר מעלות נוספות חוץ מהסדר, למשל היא יוצרת להם רשת פנימית מחוברת, ואפשר להשתמש בדומיינים שלהם עצמם אבל זה כבר לפעם אחרת..)

              אם נחזור רגע לתמונה של phpmyadmin שיש ברשת כאן

              נראה שיש שם אופציה נוחה להריץ את phpmyadmin דרך docker compose

              services:
                db:
                  image: mariadb:10.11
                  restart: always
                  environment:
                    MYSQL_ROOT_PASSWORD: notSecureChangeMe
              
                phpmyadmin:
                  image: phpmyadmin
                  restart: always
                  ports:
                    - 8080:80
                  environment:
                    - PMA_ARBITRARY=1
              

              מאוד פשוט, מאוד קריא, להריץ את הdb + phpmyadmin דרך קובץ אחד נח

              נוסיף קובץ בשם docker-compose.yml

              וכרגע מבנה התיקיות שלנו יראה בערך ככה:

              .
              ├── docker-compose.yml
              └── mynodejscode
                  ├── Dockerfile
                  ├── package.json
                  ├── package-lock.json
                  └── index.js
              

              עכשיו בא נוסיף לדוקר קומפוז את הפרויקט שלנו

              אנחנו נרצה שהוא יידע לגשת לdockerfile, לבנות את התמונה שם, ולהריץ אותו על פורט 8090

                nodeapp:
                  build:
                    context: ./mynodejscode
                  container_name: my-node-app
                  ports:
                    - "8090:8080"
              

              ועכשיו כשנרים אותו עם הפקודה docker compose up -d
              3 השירותים שלנו יתרוממו ביחד (db, phpmyadmin, node code) ויהיו נגישים בשרת בכתובות שמיפנו להם (8080 /8090)
              עכשיו נשאר להפנות דומיין לשם כדי שיהיו נגישים חיצונית לעולם

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

              עריכה: כשנופל קונטיינר (קונטיינר = תמונה שהרמת) של דוקר, הוא מתרומם בדיוק 1:1 כמו שבנית אותו בפעם הראשונה, הקבצים שאתה יוצר בפנים, השינויים שאתה משנה ברמת הdb אם הוא בדוקר, הכל נמחק כשהקונטיינר נופל, ולכן יש חשיבות גדולה להיכרות עם volume של דוקר, הוא מאפשר לך למפות תיקיה מהשרת, לתוך תיקיה בקונטיינר שרץ וככה אם הקונטיינר נופל, הנתונים נשמרים בשרת בתיקייה שמיפת.

              למשל בפרויקט שלך אם תגדיר

              volumes:
                - ./data:/app/data
              

              זה ימפה את תיקיית data הנוכחית בשרת לכתובת app/data, ומכייון שהסביבת עבודה שלך רצה כבר על /app (כמו שמוגדר בdockerfile) כל מה שתשמור בקוד בתוך data יישמר גם בחוץ

              מה שייצור סביבת עבודה כזאת בערך

              .
              ├── docker-compose.yml
              ├── data/  -- כאן הווליום נשמר
              └── mynodejscode/
                  ├── Dockerfile
                  ├── package.json
                  ├── package-lock.json
                  └── index.js
              
              E מנותק
              E מנותק
              eido
              כתב נערך לאחרונה על ידי eido
              #10

              @צבי-ש כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

              למשל את phpmyadmin תוכל להתקין ישירות מכאן.

              יש שם כל מיני גרסאות fpm/apache/fpm-alpine.
              מה זה אומר?

              הבנתי שapache זה עם שרת, alpine זו גירסה מינימלית, אבל מה זה fpm? מתי צריך שרת ומתי לא?

              A0533057932A תגובה 1 תגובה אחרונה
              0
              • E eido

                @צבי-ש כתב בפיתוח אפליקציית אנטרנט + מסד נתונים בדוקר:

                למשל את phpmyadmin תוכל להתקין ישירות מכאן.

                יש שם כל מיני גרסאות fpm/apache/fpm-alpine.
                מה זה אומר?

                הבנתי שapache זה עם שרת, alpine זו גירסה מינימלית, אבל מה זה fpm? מתי צריך שרת ומתי לא?

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

                @eido latest בזה תשתמש ובעזרת ה' כאשר תעמיק עוד בידע ובענין תתחיל ללמוד על ההבדלים הדקים בין התמונות השונות

                E תגובה 1 תגובה אחרונה
                1
                • A0533057932A A0533057932

                  @eido latest בזה תשתמש ובעזרת ה' כאשר תעמיק עוד בידע ובענין תתחיל ללמוד על ההבדלים הדקים בין התמונות השונות

                  E מנותק
                  E מנותק
                  eido
                  כתב נערך לאחרונה על ידי
                  #12

                  @A0533057932 הבנתי שapache זה עם שרת, alpine זו גירסה מינימלית, אבל מה זה fpm? מתי צריך שרת ומתי לא?

                  A0533057932A תגובה 1 תגובה אחרונה
                  0
                  • E eido

                    @A0533057932 הבנתי שapache זה עם שרת, alpine זו גירסה מינימלית, אבל מה זה fpm? מתי צריך שרת ומתי לא?

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

                    @eido תשובה מכבוד הרב גימני בנו של הרב גוגל
                    https://g.co/gemini/share/f4c3d868b9a6

                    תגובה 1 תגובה אחרונה
                    2
                    • E מנותק
                      E מנותק
                      eido
                      כתב נערך לאחרונה על ידי
                      #14

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

                      תגובה 1 תגובה אחרונה
                      0
                      • צבי-שצ מנותק
                        צבי-שצ מנותק
                        צבי-ש
                        כתב נערך לאחרונה על ידי
                        #15

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

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

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

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

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


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

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

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