Jalankan Pelayan PostGIS sebagai Kontena Docker

Jalankan Pelayan Postgis Sebagai Kontena Docker



Tidak dinafikan bahawa Docker telah menjadi salah satu alat pembangun yang paling banyak digunakan dalam beberapa tahun kebelakangan ini. Docker membenarkan kami membangunkan, membungkus, menghantar dan menjalankan aplikasi dalam persekitaran terpencil yang mengandungi semua kebergantungan yang diperlukan untuk menjalankan aplikasi.

PostGIS ialah lanjutan pangkalan data PostgreSQL yang menambah sokongan untuk objek data geografi. Ini membolehkan kami menggunakan pangkalan data PostgreSQL untuk menyimpan dan menanyakan data spatial. Seperti yang anda boleh duga, menggabungkan PostGIS dan Docker menyediakan kaedah yang cekap dan meluas untuk mengurus data spatial.

Dalam tutorial ini, kita akan belajar bagaimana kita boleh menyediakan contoh PostGIS dengan cepat di dalam bekas Docker. Kami juga akan merangkumi beberapa asas PostGIS dan mempelajari cara memuatkan data spatial dan melaksanakan beberapa pertanyaan asas menggunakan bekas.







Keperluan:

Untuk mengikuti tutorial ini, pastikan anda mempunyai perkara berikut:



  1. Enjin Docker dipasang pada sistem anda. Anda boleh menyemak tutorial kami tentang cara memasang Docker pada sistem sasaran anda.
  2. Pengetahuan asas tentang PostgreSQL dan data spatial

Dengan syarat yang diberikan dipenuhi, kita boleh meneruskan dengan tutorial.



Jalankan PostGIS dalam Docker

Mari kita teruskan dan sediakan bekas PostGIS. Kami mulakan dengan menarik bekas PostGIS dari Docker Hub dengan arahan berikut:





$ docker tarik postgis/postgis

Sebaik sahaja kami memuat turun imej, kami boleh menjalankan bekas menggunakan imej seperti yang ditunjukkan dalam arahan berikut:



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

Dalam arahan yang diberikan, kami menentukan parameter berikut:

  1. –nama – Ini membolehkan kami menentukan nama bekas.
  2. -e – Ini membolehkan kami menetapkan kata laluan PostgreSQL sebagai pembolehubah persekitaran. Ini adalah kata laluan yang digunakan untuk pengguna postgres.
  3. -d - Ini memberitahu Docker untuk menjalankan bekas di latar belakang atau mod tertanggal.
  4. -p 5432:5432 – Ini membolehkan kami memetakan port 5432 di dalam bekas kepada hos pada port 5432.

Untuk mengesahkan bahawa bekas sedang berjalan, gunakan arahan berikut:

$ buruh pelabuhan ps

Anda sepatutnya melihat bekas PostGIS disenaraikan.

Muatkan Data Spatial dalam PostGIS

Memandangkan kami mempunyai bekas PostGIS yang sedang berjalan, kami boleh memuatkan data spatial menggunakan pelbagai alat dan format seperti GeoJSON, CSV, dll.

Untuk kes ini, kami menggunakan Shapefile seperti yang ditunjukkan dalam arahan berikut:

$ mkdir -p ~/data
$ cd ~/data
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ unzip ne_110m_admin_0_countries.zip

Dalam arahan yang diberikan, kita mulakan dengan mencipta direktori untuk menyimpan data yang ingin kita muatkan. Kami kemudian memuat turun data geo dari pautan yang ditentukan dan mengekstraknya ke dalam direktori.

Langkah seterusnya ialah memuatkan data ke dalam pangkalan data. Kami mulakan dengan menyambung ke pangkalan data PostgreSQL menggunakan arahan berikut:

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

Jika digesa untuk kata laluan, berikan kata laluan yang anda konfigurasikan semasa menjalankan bekas. Ini sepatutnya mengesahkan anda dan menjatuhkan anda ke dalam shell PostgreSQL.

Setelah disambungkan ke pangkalan data, kami boleh menggunakan utiliti 'shp2pgsql' untuk mengimport data daripada Shapefiles yang kami ekstrak dalam langkah sebelumnya.

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

Dalam arahan sebelumnya, kami menggunakan pilihan -I untuk mencipta indeks spatial untuk pertanyaan yang lebih pantas bagi data spatial. Kami juga menentukan sistem koordinat sebagai 4326 menggunakan parameter -s. EPSG:4326 ialah sistem keadaan koordinat standard untuk WGS 84.

Data Pertanyaan PostGIS

Sebaik sahaja kami memuatkan data, kami boleh keluar dari utiliti PSQL dengan menjalankan perintah '\q' atau keluar.

Seterusnya, untuk mengesahkan kami telah memuatkan data, kami boleh menyambung semula ke pangkalan data dengan menjalankan arahan berikut:

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

Seterusnya, anda boleh menjalankan pertanyaan spatial asas untuk mengesahkan bahawa anda mempunyai data yang disimpan.

Kesimpulan

Dalam tutorial ini, anda mempelajari cara menjalankan pelayan PostGIS sebagai bekas Docker dan memuatkan data ke dalam pangkalan data.