应用程序引擎灵活-Docker文件无法安装GDAL
我正在尝试将Django应用程序部署到AppEngine灵活的环境中。我的dockerfile无法安装GDAL 这是我在运行应用程序引擎灵活-Docker文件无法安装GDAL,docker,google-app-engine,dockerfile,gdal,Docker,Google App Engine,Dockerfile,Gdal,我正在尝试将Django应用程序部署到AppEngine灵活的环境中。我的dockerfile无法安装GDAL 这是我在运行gcloud app deploy时收到的错误消息: File "/env/lib/python3.7/site-packages/django/contrib/gis/gdal/libgdal.py", line 42, in <module> % '", "'.join(lib_names) django.core.exceptions.Impr
gcloud app deploy
时收到的错误消息:
File "/env/lib/python3.7/site-packages/django/contrib/gis/gdal/libgdal.py", line 42, in <module>
% '", "'.join(lib_names)
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal", "GDAL", "gdal2.4.0", "gdal2.3.0", "gdal2.2.0", "gdal2.1.0", "gdal2.0.0"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
[2020-04-24 16:12:26 +0000] [8] [INFO] Worker exiting (pid: 8)
[2020-04-24 16:12:26 +0000] [1] [INFO] Shutting down: Master
[2020-04-24 16:12:26 +0000] [1] [INFO] Reason: Worker failed to boot.
这是我的应用程序。yaml:
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
# You can also specify 2 for Python 2.7
python_version: 3.7
我知道我问了一个与被回答的问题非常相似的问题,但提问者自己的解决方案似乎不起作用 我认为问题出在
Docker
文件中。您具有以下功能:
...
RUN apt-get update && apt-get install -y \
binutils \
gdal-bin \
python3-gdal \
ibgdal-dev \
libproj-dev
....
我认为lib的名称不是
ibgdal-dev
对我来说,似乎您缺少了一个正确的gdal
安装。的确,安装起来有点棘手,但在ubuntu
(也有docker
)上,我通常有很好的安装经验
下面是一个例子:
FROM ubuntu:bionic
RUN apt-get update && apt-get install -y \
software-properties-common \
python3 \
python3-dev \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
RUN add-apt-repository ppa:ubuntugis/ppa
RUN apt-get update && apt-get install -y \
gdal-bin=2.4.2+dfsg-1~bionic0 \
python3-gdal \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y libpq-dev \
&& rm -rf /var/lib/apt/lists/*
...
我支持Val的回答,使用“ubuntugis”PPA,并提供更新的GDAL等库。至少这对我起了作用。我应该补充一点,我脱离了基本的GAE flex映像(基于Ubuntu16.04 LTS xenial),这样GAE的健康检查就可以按预期工作了。它们也很难调试 您还需要在
app.yaml
中使用GAE的定制/flex环境(假设您的项目名为“我的应用程序”,请检查wsgi.py
的位置):
尝试一下此Dockerfile:
FROM gcr.io/google-appengine/python
ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND noninteractive
RUN apt -y update && apt -y upgrade\
&& apt-get install -y software-properties-common \
&& add-apt-repository -y ppa:ubuntugis/ppa \
&& apt -y update && apt -y upgrade\
&& apt-get -y install \
gdal-bin \
libgdal-dev \
python3-gdal \
&& apt-get autoremove -y \
&& apt-get autoclean -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN virtualenv /env -p python3.7
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/requirements.txt
RUN python3 -m pip install -r /app/requirements.txt
ADD . /app/
WORKDIR /app
CMD gunicorn -b :$PORT my-app.wsgi
请注意,您在上面的一条评论中提到要将requirements.txt
添加到容器中,但实际上您并没有在Dockerfile中这样做
Python3.7附带了GAE基本映像,但是如果您想使用3.8,请参阅Dockerfile Descripte仍然失败,不幸的是,同样的错误。非常感谢您的检查!很久以前,我有一个类似的问题,但与另一个图书馆。我所做的是创建并使用
start.sh
作为Docker文件的ENTRYPOINT
。非常感谢这一点-很高兴知道Ubuntu有一个GIS版本。不幸的是,在使用Dockerfile条目时,我仍然会遇到相同的错误。appengine似乎没有运行一些RUN命令,特别是那些试图安装软件包的命令。我一辈子都搞不懂为什么。@Jamie2483它不是ubuntu的GIS版本。。。而是一些主动维护的GIS相关软件,可以从那里下载,而不是标准的回购。例如,GDAL,默认情况下安装它将导致失败。你试过ubuntugis吗?你也会犯同样的错误吗?
runtime: custom
env: flex
entrypoint: gunicorn -b :$PORT my-app.wsgi
runtime_config:
python_version: 3
FROM gcr.io/google-appengine/python
ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND noninteractive
RUN apt -y update && apt -y upgrade\
&& apt-get install -y software-properties-common \
&& add-apt-repository -y ppa:ubuntugis/ppa \
&& apt -y update && apt -y upgrade\
&& apt-get -y install \
gdal-bin \
libgdal-dev \
python3-gdal \
&& apt-get autoremove -y \
&& apt-get autoclean -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN virtualenv /env -p python3.7
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/requirements.txt
RUN python3 -m pip install -r /app/requirements.txt
ADD . /app/
WORKDIR /app
CMD gunicorn -b :$PORT my-app.wsgi