在 postgresql 和 Docker 中創建擴展 postgis 時遇到問題。我已經閱讀了很多帖子和教程,但我失敗了 :) 我正在研究 WSL:
# uname -a
Linux 6019b3c71dfc 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 GNU/Linux
# psql -U user -d database -h db
psql (11.14 (Debian 11.14-0 deb10u1), server 10.18)
Type "help" for help.
massifs=# CREATE EXTENSION postgis;
ERROR: could not open extension control file "/usr/local/share/postgresql/extension/postgis.control": No such file or directory
所以,我找到了 postgis.control 檔案:
# find /usr -name postgis.control
/usr/share/postgresql/11/extension/postgis.control
并將其復制(并在需要時更改權限)到正確的檔案夾中: cp /usr/share/postgresql/11/extension/postgis.control /usr/local/share/postgresql/extension
但錯誤是一樣的:(
我已經安裝了所有需要的庫:
# dpkg -l | grep postgis
ii postgis 2.5.1 dfsg-1 amd64 Geographic objects support for PostgreSQL
ii postgis-doc 2.5.1 dfsg-1 all Geographic objects support for PostgreSQL -- documentation
ii postgis-gui 2.5.1 dfsg-1 amd64 Geographic objects support for PostgreSQL -- GUI programs
ii postgresql-11-postgis-2.5 2.5.1 dfsg-1 amd64 Geographic objects support for PostgreSQL 11
ii postgresql-11-postgis-2.5-scripts 2.5.1 dfsg-1 all Geographic objects support for PostgreSQL 11 -- SQL scripts
同樣的錯誤:(
我的 docker-compose.yaml :
#./dj/docker-compose.yml
version: '3.7'
services:
web:
env_file:
- ./env/django.env
build:
context: ./myproject
dockerfile: Dockerfile
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./myproject:/opt/myproject
ports:
- "8050:8000"
depends_on:
- db
restart: always
db:
env_file:
- ./env/postgresql.env
image: postgis/postgis
#image: postgres:10-alpine
container_name: postgres_container_myproject
hostname: db
volumes:
- /var/lib/postgresql/data-myproject:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
pgadmin:
env_file:
- ./env/pgadmin.env
image: dpage/pgadmin4
container_name: pgadmin_container_myproject
ports:
- "8059:80"
volumes:
- /var/lib/pgadmin/data:/var/lib/pgadmin/data
links:
- "db:pgsql-server"
restart: always
logging:
driver: none
volumes:
pgadmin_data:
postgres_data:
driver: local
請問你有什么想法嗎?
uj5u.com熱心網友回復:
我一直在使用postgis/docker-postgis,如果你想檢查他們是如何做的,Dockerfile是一個好地方
uj5u.com熱心網友回復:
請注意,您連接到錯誤的服務器或服務器版本錯誤:
psql (11.14 (Debian 11.14-0 deb10u1), server 10.18)
報告服務器版本為10 (10.18),該軟體包肯定未安裝postgresql-11-postgis-2.5(即版本11)。
我假設您正在連接到沒有安裝正確軟體包的不同機器/容器(不是localhost )。
uj5u.com熱心網友回復:
這是我的 Dockerfile :
# ./myproject/Dockerfile
FROM python:3.8.6-buster
# set work directory
WORKDIR /opt/myproject
# set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# install dependencies
RUN pip install --upgrade pip
RUN pip install pgcli
COPY ./requirements.txt /opt/myproject/requirements.txt
RUN chmod x /opt/myproject/requirements.txt
RUN pip install -r requirements.txt
# copy project
COPY . /opt/myproject/
# POSTGRESQL
# First RUN Statement: to install postgresql dependency
RUN apt update -y && apt upgrade -y && apt install -y libpq-dev gcc postgresql-client && apt install -y vim vim-common && apt install -y pgcli
# code coverage
RUN pip install coverage
# Third RUN Statement: Remove the gcc compier after install the driver
RUN apt-get autoremove -y gcc
# set timezone
RUN apt install tzdata
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# install GEOS & GDAL
RUN apt install libgeos-dev -y
# install GDAL
RUN apt install -y postgis* libgdal-dev python3-gdal gdal-bin
RUN chmod x /opt/myproject/docker-entrypoint.sh
ENTRYPOINT [ "/opt/myproject/docker-entrypoint.sh"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/417554.html
標籤:
