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

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

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

חיבור למסד נתונים בדוקר 2

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

    אחרי העזרה הנפלאה של @aaron בפוסט הקודם, שמתי לב שהדוגמא שהבאתי טיפה שונה מהמקרה המקורי שלי.

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

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

    יש רעיון איך להגדיר בכל זאת שם לקונטיינר ולהתחבר אליו ישירות?

    תודה
    מצורף הקובץ DOCKER-COMPOSE

    version: '3.1'
    
    services:
      db:
        image: mariadb:10.5
        container_name: maindb
        environment:
          MYSQL_ROOT_PASSWORD: 54fghjghjk44RkjJHkhgv3798
    
      main:
        build: .
        container_name: main
        network_mode: host
        depends_on:
          - db
    #    links:
    #      - db:maindb
    

    והקובץ ODBC.INI

    [MySQL-main]
    Description=MySQL connection
    driver=MySQL
    server=172.19.0.2
    ;server=maindb
    Port=3306
    ;Socket=/var/run/mysqld/mysqld.sock
    option=3
    Charset=utf8
    

    ליצירת קשר: admin@i-call.me

    הידד! גישה למייל גם בלי מחשב ואינטרנט!

    י תגובה 1 תגובה אחרונה
    0
    • י מנותק
      י מנותק
      יוסף בן שמעון
      השיב לשואף ב נערך לאחרונה על ידי
      #2

      @שואף למה אתה צריך לעבוד עם הרשת של המארח?

      שואףש תגובה 1 תגובה אחרונה
      1
      • שואףש מנותק
        שואףש מנותק
        שואף
        השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
        #3

        @יוסף-בן-שמעון אסטריסק דורש פורטים של RTP מרובים, אין אפשרות לפתוח את כולם (מדובר על כמה אלפים, ודוקר יכול לפתוח רק כמה פורטים בודדים)

        ליצירת קשר: admin@i-call.me

        הידד! גישה למייל גם בלי מחשב ואינטרנט!

        י תגובה 1 תגובה אחרונה
        2
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לשואף ב נערך לאחרונה על ידי
          #4

          @שואף אז בעצם אתה רוצה להתחבר מהרשת המארחת לרשת הפנימית של המיכל, אם כן expose פשוט אמור לפתור את זה.

          שואףש תגובה 1 תגובה אחרונה
          2
          • שואףש מנותק
            שואףש מנותק
            שואף
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
            #5

            @יוסף-בן-שמעון אמר בחיבור למסד נתונים בדוקר 2:

            @שואף אז בעצם אתה רוצה להתחבר מהרשת המארחת לרשת הפנימית של המיכל, אם כן expose פשוט אמור לפתור את זה.

            לא עוזר. עדיין אפשר להתחבר בתור כתובת אייפי אבל לא עם שם הקונטיינר.

            ליצירת קשר: admin@i-call.me

            הידד! גישה למייל גם בלי מחשב ואינטרנט!

            A תגובה 1 תגובה אחרונה
            0
            • A מנותק
              A מנותק
              aaron
              השיב לשואף ב נערך לאחרונה על ידי
              #6

              @שואף אמר בחיבור למסד נתונים בדוקר 2:

              @יוסף-בן-שמעון אמר בחיבור למסד נתונים בדוקר 2:

              @שואף אז בעצם אתה רוצה להתחבר מהרשת המארחת לרשת הפנימית של המיכל, אם כן expose פשוט אמור לפתור את זה.

              לא עוזר. עדיין אפשר להתחבר בתור כתובת אייפי אבל לא עם שם הקונטיינר.

              אם אתה עושה expose, אז אתה מתחבר לlocalhost.

              aaron.tchumim@gmail.com
              Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

              ווצאפ API - תיעוד שירות API לא רשמי.

              שואףש 2 תגובות תגובה אחרונה
              1
              • שואףש מנותק
                שואףש מנותק
                שואף
                השיב לaaron ב נערך לאחרונה על ידי
                #7

                @aaron

                
                root@docker:~# mysql -u root -p54fghjghjk44RkjJHkhgv3798 -h localhost -P 3306
                mysql: [Warning] Using a password on the command line interface can be insecure.
                ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
                

                ליצירת קשר: admin@i-call.me

                הידד! גישה למייל גם בלי מחשב ואינטרנט!

                י תגובה 1 תגובה אחרונה
                0
                • שואףש מנותק
                  שואףש מנותק
                  שואף
                  השיב לaaron ב נערך לאחרונה על ידי
                  #8

                  @aaron @יוסף-בן-שמעון אני מדבר על אפליקציה במצב HOST ומסד נתונים במצב BRIDGE. ואז השאלה איך לגשת מהאפליקציה לנתונים בלי להשתמש בכתובת אייפי החמקמקה.
                  ברור שאם אגדיר המסד נתונים במצב HOST אוכל לגשת עם LOCALHOST, אבל אני מנסה להמנע מלחשוף שירותים שאינם נחוצים (או שאולי זה לא כזה נורא ואפשר לוותר על הזהירות הזו?)

                  ליצירת קשר: admin@i-call.me

                  הידד! גישה למייל גם בלי מחשב ואינטרנט!

                  תגובה 1 תגובה אחרונה
                  0
                  • י מנותק
                    י מנותק
                    יוסף בן שמעון
                    השיב לשואף ב נערך לאחרונה על ידי יוסף בן שמעון
                    #9

                    @שואף אמר בחיבור למסד נתונים בדוקר 2:

                    @aaron

                    
                    root@docker:~# mysql -u root -p54fghjghjk44RkjJHkhgv3798 -h localhost -P 3306
                    mysql: [Warning] Using a password on the command line interface can be insecure.
                    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
                    

                    כלומר - אותה הפקודה בדיוק מאותה המכונה, עם אייפי עובדת ועם לוקאלהוסט לא עובדת?
                    אחרי שערכת את הדוקר קומפוז עשית DOWN ו UP?

                    שואףש תגובה 1 תגובה אחרונה
                    2
                    • שואףש מנותק
                      שואףש מנותק
                      שואף
                      השיב ליוסף בן שמעון ב נערך לאחרונה על ידי שואף
                      #10

                      @יוסף-בן-שמעון כן וכן.
                      במילים אחרות, אם אני מפעיל דוקר של MYQSL במצב BRIDGE ועושה EXPOSE לפורט 3306, אני לא מצליח להתחבר אליו מהשרת הHOST

                      version: '3.1'
                      
                      services:
                        db:
                          image: mariadb:10.5
                          container_name: testdb
                          network_mode: bridge
                          expose:
                            - 3306
                          environment:
                            MYSQL_ROOT_PASSWORD: 54fghjghjk44RkjJHkhgv3798
                      

                      הצורה היחידה שאני מצליח להתחבר זה לעשות

                      docker inspect testdb  | grep IPAddress
                      

                      שמחזיר לי אייפי "172.17.0.2" ואז אני יכול להתחבר כך

                      mysql -u root -p54fghjghjk44RkjJHkhgv3798 -h "172.17.0.2"
                      

                      ליצירת קשר: admin@i-call.me

                      הידד! גישה למייל גם בלי מחשב ואינטרנט!

                      רפאלר תגובה 1 תגובה אחרונה
                      0
                      • A מנותק
                        A מנותק
                        aaron
                        כתב ב נערך לאחרונה על ידי
                        #11

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

                        https://github.com/docker/compose/issues/3211 אולי זה יתן כיוון

                        aaron.tchumim@gmail.com
                        Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                        ווצאפ API - תיעוד שירות API לא רשמי.

                        שואףש תגובה 1 תגובה אחרונה
                        1
                        • שואףש מנותק
                          שואףש מנותק
                          שואף
                          השיב לaaron ב נערך לאחרונה על ידי
                          #12

                          @aaron זה כיוון מעניין.
                          אבל אין לזה פיתרון נורמלי? אף אחד לא חשב על זה עדיין, שצריכים לתת גישה נורמלית מהשרת המארח לקונטיינר.
                          גיגלתי הרבה, לא מצאתי על זה תשובה ברורה, מוזר לא?

                          ליצירת קשר: admin@i-call.me

                          הידד! גישה למייל גם בלי מחשב ואינטרנט!

                          A תגובה 1 תגובה אחרונה
                          0
                          • A מנותק
                            A מנותק
                            aaron
                            השיב לשואף ב נערך לאחרונה על ידי
                            #13

                            @שואף
                            גישה נורמלית זה אומר expose. זה עובד ועובד מעולה.
                            לך זה לא עבד כי ניסת להתחבר לסוקט ולא לפורט!

                            aaron.tchumim@gmail.com
                            Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                            ווצאפ API - תיעוד שירות API לא רשמי.

                            שואףש תגובה 1 תגובה אחרונה
                            2
                            • שואףש מנותק
                              שואףש מנותק
                              שואף
                              השיב לaaron ב נערך לאחרונה על ידי
                              #14

                              @aaron לא מבין מה שאתה אומר.
                              אני רוצה להתחבר לפורט, ולא מצאתי איך, חוץ מלאתר את כתובת האייפי ואת זה אני רוצה למנוע.
                              אבל להתחבר ל127.0.0.1 זה לא נותן בשום אופן.
                              אתה מבין את הבעייה?

                              ליצירת קשר: admin@i-call.me

                              הידד! גישה למייל גם בלי מחשב ואינטרנט!

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

                                העובדה שיש לך אפליקציה נוספת שמשתמשת בNetwork של הHost הינה חסרת חשיבות, השאלה שלך היא כיצד ניתן לגשת לקונטיינר (bridge network mode) מבחוץ (הHost המארח).

                                המשמעות של Expose היא תיעודית בלבד, בשביל לאפשר גישה לקונטיינר מבחוץ אתה צריך לבקש זאת באופן מפורש (Publish), מעבר לעובדה שאתה לא רוצה שזה יתבצע כברירת מחדל (בשל שיקולי אבטחה), אתה גם מעוניין לקבוע באיזה פורט התהליך (שמאזין בקונטיינר) יהיה זמין בHost.

                                התהליך מתבצע באמצעות מיפוי פורט X בקונטיינר לפורט Y בHost.

                                להלן מספר דוגמאות מתוך הדוקומנטציה:

                                פקודה תיאור
                                docker run -p 8080:80 מפה את פורט 80 בקונטיינר לפורט 8080 בHost
                                docker run -p 192.168.1.100:8080:80 מפה את פורט 80 TCP בקונטיינר לפורט 8080 בHost עבור חיבורים לHost באמצעות האייפיי 192.168.1.100
                                docker run -p 8080:80/tcp -p 8080:80/udp מפה את פורט TCP-80 בקונטיינר לפורט TCP-8080 בHost ואת פורט UDP-80 בקונטיינר לפורט 8080-UDP בHost

                                אם המיפוי של המסד נתונים יתבצע באופן דלהלן "3306:3306", המסד יהיה זמין בפורט 3306 של הlocalhost.

                                
                                services:
                                  db:
                                    image: mariadb:10.5
                                    environment:
                                      MYSQL_ROOT_PASSWORD: 54fghjghjk44RkjJHkhgv3798
                                    ports:
                                      - "3306:3306"
                                
                                שואףש תגובה 1 תגובה אחרונה
                                5
                                • שואףש מנותק
                                  שואףש מנותק
                                  שואף
                                  השיב לרפאל ב נערך לאחרונה על ידי
                                  #16

                                  @רפאל נפלא. חשבתי שEXPOSE זה למיפוי פנימי וPORTS לחיצוני, אבל בעצם מה שאני צריך זה נקרא חיצוני.
                                  וכמו שכתבת הEXPOSE לא אומר כלום (פעם זה לא היה ככה אם אני לא טועה)

                                  יישר כוח גדול!!!

                                  ליצירת קשר: admin@i-call.me

                                  הידד! גישה למייל גם בלי מחשב ואינטרנט!

                                  רפאלר תגובה 1 תגובה אחרונה
                                  1
                                  • רפאלר מנותק
                                    רפאלר מנותק
                                    רפאל
                                    השיב לשואף ב נערך לאחרונה על ידי רפאל
                                    #17

                                    @שואף נכון, בעבר Expose היה מאפשר גישה בין קונטיינרים, ובהעדרו, היה ניתן לגשת לתהליך רק מתוך הקונטיינר עצמו.

                                    תגובה 1 תגובה אחרונה
                                    2

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

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

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