Chạy Máy chủ PostGIS dưới dạng Docker Container

Chay May Chu Postgis Duoi Dang Docker Container



Không còn nghi ngờ gì nữa, Docker đã trở thành một trong những công cụ dành cho nhà phát triển được sử dụng rộng rãi nhất trong những năm gần đây. Docker cho phép chúng tôi phát triển, đóng gói, vận chuyển và chạy ứng dụng trong các môi trường biệt lập có chứa tất cả các phần phụ thuộc cần thiết để chạy ứng dụng.

PostGIS là phần mở rộng của cơ sở dữ liệu PostgreSQL bổ sung hỗ trợ cho các đối tượng dữ liệu địa lý. Điều này cho phép chúng tôi sử dụng cơ sở dữ liệu PostgreSQL để lưu trữ và truy vấn dữ liệu không gian. Như bạn có thể đoán, việc kết hợp PostGIS và Docker cung cấp một phương pháp quản lý dữ liệu không gian hiệu quả và rộng rãi.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách có thể nhanh chóng thiết lập một phiên bản PostGIS bên trong vùng chứa Docker. Chúng tôi cũng sẽ đề cập đến một số vấn đề cơ bản về PostGIS và tìm hiểu cách tải dữ liệu không gian cũng như thực hiện một số truy vấn cơ bản bằng cách sử dụng vùng chứa.







Yêu cầu:

Để làm theo hướng dẫn này, hãy đảm bảo rằng bạn có những điều sau:



  1. Docker Engine đã được cài đặt trên hệ thống của bạn. Bạn có thể xem hướng dẫn của chúng tôi về cách cài đặt Docker trên hệ thống mục tiêu của mình.
  2. Kiến thức cơ bản về PostgreSQL và dữ liệu không gian

Khi đã đáp ứng được các yêu cầu nhất định, chúng ta có thể tiếp tục phần hướng dẫn.



Chạy PostGIS trong Docker

Hãy để chúng tôi tiến hành và thiết lập vùng chứa PostGIS. Chúng tôi bắt đầu bằng cách kéo bộ chứa PostGIS từ Docker Hub bằng lệnh sau:





$ docker kéo postgis/postgis

Sau khi tải xuống hình ảnh, chúng ta có thể chạy vùng chứa bằng cách sử dụng hình ảnh như trong lệnh sau:



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

Trong lệnh đã cho, chúng tôi chỉ định các tham số sau:

  1. –name – Điều này cho phép chúng ta chỉ định tên của container.
  2. -e – Điều này cho phép chúng tôi đặt mật khẩu PostgreSQL làm biến môi trường. Đây là mật khẩu được sử dụng cho người dùng postgres.
  3. -d – Điều này yêu cầu Docker chạy container ở chế độ nền hoặc chế độ tách rời.
  4. -p 5432:5432 – Điều này cho phép chúng ta ánh xạ cổng 5432 bên trong container tới máy chủ trên cổng 5432.

Để xác minh rằng container đang chạy, hãy sử dụng lệnh sau:

$ docker ps

Bạn sẽ thấy vùng chứa PostGIS được liệt kê.

Tải dữ liệu không gian trong PostGIS

Bây giờ chúng ta có bộ chứa PostGIS đang chạy, chúng ta có thể tải dữ liệu không gian bằng nhiều công cụ và định dạng khác nhau như GeoJSON, CSV, v.v.

Trong trường hợp này, chúng tôi sử dụng Shapefile như trong các lệnh sau:

$ mkdir -p ~/dữ liệu
$ cd ~/dữ liệu
quên https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ giải nén ne_110m_admin_0_countries.zip

Trong các lệnh đã cho, chúng ta bắt đầu bằng cách tạo một thư mục để lưu trữ dữ liệu mà chúng ta muốn tải. Sau đó, chúng tôi tải xuống dữ liệu địa lý từ liên kết được chỉ định và trích xuất nó vào thư mục.

Bước tiếp theo là tải dữ liệu vào cơ sở dữ liệu. Chúng tôi bắt đầu bằng cách kết nối với cơ sở dữ liệu PostgreSQL bằng lệnh sau:

$ docker exec -it postgis-server psql -U postgres -d postgres

Nếu được nhắc nhập mật khẩu, hãy cung cấp mật khẩu mà bạn đã định cấu hình khi chạy vùng chứa. Điều này sẽ xác thực bạn và thả bạn vào trình bao PostgreSQL.

Sau khi kết nối với cơ sở dữ liệu, chúng ta có thể sử dụng tiện ích “shp2pgsql” để nhập dữ liệu từ Shapefiles mà chúng ta đã trích xuất ở các bước trước.

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgres

Trong lệnh trước, chúng tôi sử dụng tùy chọn -I để tạo chỉ mục không gian nhằm truy vấn dữ liệu không gian nhanh hơn. Chúng tôi cũng chỉ định hệ tọa độ là 4326 bằng tham số -s. EPSG:4326 là hệ thống trạng thái tọa độ tiêu chuẩn cho WGS 84.

Dữ liệu truy vấn PostGIS

Sau khi tải dữ liệu, chúng tôi có thể thoát tiện ích PSQL bằng cách chạy lệnh “\q” hoặc thoát.

Tiếp theo, để xác minh rằng chúng tôi đã tải dữ liệu, chúng tôi có thể kết nối lại với cơ sở dữ liệu bằng cách chạy lệnh sau:

$ docker exec -it postgis-container psql -U postgres -d postgres

Tiếp theo, bạn có thể chạy các truy vấn không gian cơ bản để xác minh rằng bạn đã lưu trữ dữ liệu.

Phần kết luận

Trong hướng dẫn này, bạn đã học cách chạy máy chủ PostGIS dưới dạng bộ chứa Docker và tải dữ liệu vào cơ sở dữ liệu.