เรียกใช้เซิร์ฟเวอร์ PostGIS เป็นคอนเทนเนอร์ Docker

Reiyk Chi Seirfwexr Postgis Pen Khxnthennexr Docker



ไม่ต้องสงสัยเลยว่า Docker ได้กลายเป็นหนึ่งในเครื่องมือสำหรับนักพัฒนาที่ใช้กันอย่างแพร่หลายมากที่สุดในช่วงไม่กี่ปีที่ผ่านมา Docker ช่วยให้เราสามารถพัฒนา จัดทำแพ็กเกจ จัดส่ง และเรียกใช้แอปพลิเคชันในสภาพแวดล้อมแบบแยกส่วนที่มีการขึ้นต่อกันทั้งหมดที่จำเป็นในการเรียกใช้แอปพลิเคชัน

PostGIS เป็นส่วนขยายของฐานข้อมูล PostgreSQL ที่เพิ่มการรองรับออบเจ็กต์ข้อมูลทางภูมิศาสตร์ ซึ่งช่วยให้เราใช้ฐานข้อมูล PostgreSQL เพื่อจัดเก็บและสืบค้นข้อมูลเชิงพื้นที่ ดังที่คุณเดาได้ การรวม PostGIS และ Docker เข้าด้วยกันจะทำให้มีวิธีการจัดการข้อมูลเชิงพื้นที่ที่มีประสิทธิภาพและกว้างขวาง

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีตั้งค่าอินสแตนซ์ PostGIS อย่างรวดเร็วภายในคอนเทนเนอร์ Docker นอกจากนี้ เราจะกล่าวถึงพื้นฐานบางอย่างของ PostGIS และเรียนรู้วิธีโหลดข้อมูลเชิงพื้นที่และดำเนินการสืบค้นพื้นฐานบางอย่างโดยใช้คอนเทนเนอร์







ความต้องการ:

หากต้องการปฏิบัติตามบทช่วยสอนนี้ ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:



  1. ติดตั้ง Docker Engine บนระบบของคุณ คุณสามารถตรวจสอบบทช่วยสอนของเราเกี่ยวกับวิธีติดตั้ง Docker บนระบบเป้าหมายของคุณ
  2. ความรู้พื้นฐานเกี่ยวกับ PostgreSQL และข้อมูลเชิงพื้นที่

เมื่อมีคุณสมบัติตรงตามข้อกำหนดแล้ว เราก็สามารถดำเนินการสอนต่อได้



เรียกใช้ PostGIS ใน Docker

ให้เราดำเนินการตั้งค่าคอนเทนเนอร์ PostGIS ต่อไป เราเริ่มต้นด้วยการดึงคอนเทนเนอร์ PostGIS จาก Docker Hub ด้วยคำสั่งต่อไปนี้:





$ นักเทียบท่าดึง postgis/postgis

เมื่อเราดาวน์โหลดอิมเมจแล้ว เราก็สามารถรันคอนเทนเนอร์โดยใช้อิมเมจดังที่แสดงในคำสั่งต่อไปนี้:



$ docker run --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis

ในคำสั่งที่กำหนด เราระบุพารามิเตอร์ต่อไปนี้:

  1. –ชื่อ – ช่วยให้เราสามารถระบุชื่อของคอนเทนเนอร์ได้
  2. -e – ช่วยให้เราสามารถตั้งรหัสผ่าน PostgreSQL เป็นตัวแปรสภาพแวดล้อมได้ นี่คือรหัสผ่านที่ใช้สำหรับผู้ใช้ postgres
  3. -d – สิ่งนี้จะบอก Docker ให้เรียกใช้คอนเทนเนอร์ในพื้นหลังหรือโหมดแยกออก
  4. -p 5432:5432 – สิ่งนี้ช่วยให้เราสามารถแมปพอร์ต 5432 ภายในคอนเทนเนอร์กับโฮสต์บนพอร์ต 5432

เพื่อตรวจสอบว่าคอนเทนเนอร์กำลังทำงานอยู่ ให้ใช้คำสั่งต่อไปนี้:

$ นักเทียบท่า ปล

คุณควรเห็นคอนเทนเนอร์ PostGIS อยู่ในรายการ

โหลดข้อมูลเชิงพื้นที่ใน PostGIS

ตอนนี้เมื่อเราใช้งานคอนเทนเนอร์ PostGIS แล้ว เราก็สามารถโหลดข้อมูลเชิงพื้นที่โดยใช้เครื่องมือและรูปแบบต่างๆ เช่น GeoJSON, CSV เป็นต้น

ในกรณีนี้ เราใช้ Shapefile ดังแสดงในคำสั่งต่อไปนี้:

$ mkdir -p ~/data
$cd ~/data
รับ https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ คลายซิป ne_110m_admin_0_countries.zip

ในคำสั่งที่กำหนด เราเริ่มต้นด้วยการสร้างไดเร็กทอรีเพื่อเก็บข้อมูลที่เราต้องการโหลด จากนั้นเราจะดาวน์โหลดข้อมูลทางภูมิศาสตร์จากลิงก์ที่ระบุและแยกลงในไดเร็กทอรี

ขั้นตอนต่อไปคือการโหลดข้อมูลลงในฐานข้อมูล เราเริ่มต้นด้วยการเชื่อมต่อกับฐานข้อมูล PostgreSQL โดยใช้คำสั่งต่อไปนี้:

$ นักเทียบท่า exec -it postgis-เซิร์ฟเวอร์ psql -U postgres -d postgres

หากได้รับแจ้งให้ใส่รหัสผ่าน ให้ระบุรหัสผ่านที่คุณกำหนดค่าไว้เมื่อเรียกใช้คอนเทนเนอร์ สิ่งนี้ควรตรวจสอบสิทธิ์คุณและวางคุณลงในเชลล์ PostgreSQL

เมื่อเชื่อมต่อกับฐานข้อมูลแล้ว เราสามารถใช้ยูทิลิตี “shp2pgsql” เพื่อนำเข้าข้อมูลจาก Shapefiles ที่เราแตกออกมาในขั้นตอนก่อนหน้านี้

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_ประเทศ | psql -U postgres -d postgres

ในคำสั่งก่อนหน้านี้ เราใช้ตัวเลือก -I เพื่อสร้างดัชนีเชิงพื้นที่เพื่อการสืบค้นข้อมูลเชิงพื้นที่ที่รวดเร็วยิ่งขึ้น นอกจากนี้เรายังระบุระบบพิกัดเป็น 4326 โดยใช้พารามิเตอร์ -s EPSG:4326 เป็นระบบสถานะพิกัดมาตรฐานสำหรับ WGS 84

ข้อมูลแบบสอบถาม PostGIS

เมื่อเราโหลดข้อมูลแล้ว เราสามารถออกจากยูทิลิตี้ PSQL ได้โดยการรันคำสั่ง “\q” หรือออก

ต่อไป เพื่อตรวจสอบว่าเราได้โหลดข้อมูลแล้ว เราสามารถเชื่อมต่อกับฐานข้อมูลอีกครั้งได้โดยการรันคำสั่งต่อไปนี้:

$ นักเทียบท่า exec -it postgis-container psql -U postgres -d postgres

จากนั้น คุณสามารถเรียกใช้การสืบค้นเชิงพื้นที่พื้นฐานเพื่อยืนยันว่าคุณมีข้อมูลที่เก็บไว้

บทสรุป

ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธีเรียกใช้เซิร์ฟเวอร์ PostGIS เป็นคอนเทนเนอร์ Docker และโหลดข้อมูลลงในฐานข้อมูล