Score:2

นักเทียบท่าเขียนพอร์ตไม่ถูกเปิดเผย?

ธง vn

ฉันมีเว็บเซิร์ฟเวอร์ที่ใช้ Python อย่างง่ายซึ่งทำงานในคอนเทนเนอร์ที่ตั้งค่าด้วยการเขียนนักเทียบท่าที่เปิดเผยพอร์ต 8080

เมื่อฉันสร้างบริการนักเทียบท่าจะรายงานว่าพอร์ตถูกเปิดเผย แต่พอร์ตไม่ได้ถูกเปิดเผยจากภายนอก

ฉันควรดูอะไรในการวินิจฉัยต่อไป

นี่คือการวิ่งทั่วไป

â demo04 sudo docker-เขียนขึ้น -d
กำลังสร้าง leagueweb_database ใหม่ ... เสร็จแล้ว
กำลังสร้าง leagueweb_server อีกครั้ง ... เสร็จแล้ว

เว็บเซิร์ฟเวอร์ Python (โดยใช้ CherryPy) รายงานว่าได้เริ่มทำงานแล้วและเปิดพอร์ต 8080

leagueweb_server | [25/Jan/2022:11:27:21] ENGINE ให้บริการบน http://127.0.0.1:8080

นักเทียบท่ารายงานว่ากำลังส่งต่อพอร์ต 8080

â demo04 sudo นักเทียบท่า-เขียน ps
       ชื่อ Command State Ports
--------------------------------------------- --------------------------------------------- --------------------
leagueweb_database /entrypoint.sh mysqld ขึ้น (ปกติ) 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
leagueweb_server ./wait-for-it.sh ฐานข้อมูล: ... เพิ่มขึ้น 0.0.0.0:8080->8080/tcp,:::8080->8080/tcp

การทดสอบสิ่งนี้จากพีซีระยะไกลฉันเห็นว่าแม้ว่าพอร์ต 3306 จะเปิดอยู่ภายนอก แต่พอร์ต 8080 นั้นไม่ได้เปิดอยู่

PS C:> ทดสอบ-NetConnection 192.168.1.132 -Port 3306
ที่อยู่ระยะไกล : 192.168.1.132
พอร์ตระยะไกล: 3306
TcpTest สำเร็จ : จริง

PS C:> ทดสอบ NetConnection 192.168.1.132 -Port 8080
คำเตือน: TCP เชื่อมต่อกับ (192.168.1.132 : 8080) ล้มเหลว

ไฟร์วอลล์ถูกปิด

â demo04 สถานะ sudo ufw
สถานะ: ไม่ได้ใช้งาน

นี่คือไฟล์เขียนนักเทียบท่า

รุ่น: '3'
บริการ:

    เว็บลีก:
        # ติดตั้ง Python และไลบรารีที่จำเป็นด้วย Dockerfile
        สร้าง:
            บริบท: .
            ไฟล์นักเทียบท่า: leagueweb.dockerfile
            
        รีสตาร์ท: เว้นแต่จะหยุด
        
        ชื่อคอนเทนเนอร์: leagueweb_server
        
        # อย่าเริ่มต้นจนกว่าฐานข้อมูลจะเริ่มต้น
        ขึ้นอยู่กับ:
            - ฐานข้อมูล
        
        # เปิดเผยพอร์ต HTTP 
        พอร์ต:
            - "8080:8080"

        # ติดตั้งรหัสและทรัพยากรของเว็บลีก
        ปริมาณ:
            - "/home/testuser/demo04/code:/leagueweb"
 
        # เริ่มเซิร์ฟเวอร์เมื่อฐานข้อมูลทำงานเท่านั้น
        คำสั่ง: ["./wait-for-it.sh", "database:3306", "--", "python", "-u", "/leagueweb/leagueweb.py"]
        

    ฐานข้อมูล:
        # ใช้ MySQL 5.7 เป็นฐานข้อมูล
        รูปภาพ: mysql/mysql-server:5.7
        
        รีสตาร์ท: เว้นแต่จะหยุด
        
        ชื่อคอนเทนเนอร์: leagueweb_database

        # ตั้งค่าตัวแปรสภาพแวดล้อมเพื่อตั้งค่าฐานข้อมูลเริ่มต้น
        สิ่งแวดล้อม:
            - "MYSQL_ROOT_PASSWORD=รูท"
            - "MYSQL_USER=ลีกเว็บ"
            - "MYSQL_PASSWORD=*******"
            - "MYSQL_DATABASE=leagueweb01"
            
        # ยกเลิกการแสดงความคิดเห็นเพื่อเปิดเผยฐานข้อมูล MySQL ภายนอกบนพอร์ต 3306 สำหรับ 
        #ทดสอบ 
        พอร์ต:
            - "3306:3306"

        # เมานต์ไฟล์ init.sql เพื่อเรียกใช้และสร้างตารางให้เราโดยอัตโนมัติ
        # ทุกอย่างในโฟลเดอร์ docker-entrypoint-initdb.d ถูกดำเนินการเป็น 
        #ทันทีที่คอนเทนเนอร์เปิดและทำงาน
        ปริมาณ:
            - "/home/testuser/demo04/db:/docker-entrypoint-initdb.d"
Score:3
ธง cn

ดูเหมือนว่าปัญหา:

ENGINE ให้บริการบน http://127.0.0.1:8080

ดูเหมือนว่าคุณจะต้องกำหนดค่าเซิร์ฟเวอร์ python ใหม่เพื่อฟัง 0.0.0.0, ไม่ 127.0.0.1

evoelise avatar
vn flag
ขอบคุณ. ไม่อยากจะเชื่อเลยว่าฉันไม่เห็น - มันเริ่มเห็นหน้าฉันแล้ว ดูเหมือนว่าฉันจดจ่ออยู่กับการคิดว่ามันเป็นปัญหาของคอนเทนเนอร์มากเกินไป
cn flag
เกิดขึ้นกับเราทุกคน!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา