Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกปัญหาเรื่อง Network ใน Docker compose

$
0
0

ปัญหา

ทำการพัฒนาระบบงานด้วย NodeJS
ทำงานร่วมกับ MySQL ผ่าน ORM library ชื่อว่า Sequelize
ในการ build และ run สำหรับการพัฒนา จะใช้งาน Docker compose
แต่ตอน run เจอปัญหา การเชื่อมต่อไปยัง MySQL ดังนี้

[gist id="c46ad8902e80c47ed2d9d88cdd45b83a" file="1.txt"]

เพิ่มเติมเกี่ยวกับ config การเชื่อมต่อไปยัง MySQL จาก NodeJS ดังนี้

[gist id="c46ad8902e80c47ed2d9d88cdd45b83a" file="config.json"]

ส่วน Docker compose file เป็นดังนี้

[gist id="c46ad8902e80c47ed2d9d88cdd45b83a" file="docker-compose.yml"]

Environment ที่ใช้งาน ประกอบไปด้วย

  • Mac OS
  • Docker Desktop 3.3.1

วิธีการแก้ไขเบื้องต้น

เป็นปัญหาที่แปลกดี เพราะว่า
การใช้ docker compose นั้น ทุก ๆ service นั้น
จะใช้งาน network เดียวกันอยู่แล้ว
น่าจะติดต่อสื่อสารกันได้สิ
เพราะว่าใน configuration file ก็อ้างถึงชื่อ service เลย

แต่จาก error message แล้ว แสดงว่า
ตัว sequlize พยายาม resolve IP ไปยัง 127.0.0.1 เสมอ
หรือว่าเป็นเพราะตัว sequlize เอง !!

ส่วนการแก้ไขปัญหาเฉพาะหน้าหรือง่าย ๆ คือ
การเพิ่ม network_mode ใน Docker compose file ไปเลย
ซึ่งทำการ config ได้หลายรูปแบบ ดังนี้

  • container:<container id>
  • service:<service name>
  • bridge/host/none

ส่วนที่เลือกใช้คือ service ไปเลย ดังนี้

[gist id="c46ad8902e80c47ed2d9d88cdd45b83a" file="docker-compose1.yml"]

ทำให้สามารถทำงานต่อไปได้แล้ว


Viewing all articles
Browse latest Browse all 1997

Trending Articles