【问题标题】:How to install GDAL Library in Docker Python image?如何在 Docker Python 映像中安装 GDAL 库?
【发布时间】:2019-10-17 13:24:39
【问题描述】:

我正在为我的 django 项目使用 python3.7-slim-buster docker 映像。现在我想使用 django 的地理功能。但看来我必须安装GDAL。所以,我运行 apt-get install gdal 并引发异常“E:无法找到包 gdal-bin”。 这是我的 docker 文件:


FROM python:3.7-slim-buster

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# DB vars
ENV DB_USER_NAME ${DB_USER_NAME}
ENV DB_NAME ${DB_NAME}
ENV DB_HOST ${DB_HOST}
ENV DB_PORT ${DB_PORT}
ENV DB_PASSWORD ${DB_PASSWORD}

ENV DJANGO_SECRET_KEY ${DJANGO_SECRET_KEY}

RUN apt-get install -y gdal-bin python-gdal python3-gdal

RUN ["adduser", "${USER_NAME}", "--disabled-password", "--ingroup", "www-data", "--quiet"]

USER ${USER_NAME}

ADD ${PROJECT_NAME}/ /home/${USER_NAME}/${PROJECT_NAME}
WORKDIR /home/${USER_NAME}/${PROJECT_NAME}

ENV PATH="/home/${USER_NAME}/.local/bin:\${PATH}:/usr/local/python3/bin"

RUN pip install --user -r requirements.txt

CMD python manage.py runserver 0.0.0.0:9000
#CMD gunicorn ${PROJECT_NAME}.wsgi:application --bind 0.0.0.0:8000
EXPOSE 8000

【问题讨论】:

  • 在安装gdal之前尝试调用apt-get update
  • 谢谢你的回答,但是,我做了,它没有用。

标签: python django docker


【解决方案1】:

您需要执行以下操作:

RUN apt-get update
RUN apt-get install -y software-properties-common && apt-get update
RUN apt-get install -y python3.7-dev
RUN  add-apt-repository ppa:ubuntugis/ppa &&  apt-get update
RUN apt-get install -y gdal-bin libgdal-dev
ARG CPLUS_INCLUDE_PATH=/usr/include/gdal
ARG C_INCLUDE_PATH=/usr/include/gdal
RUN pip install GDAL

【讨论】:

  • 它会引发 add-apt-repository 命令未找到,因为它无法找到包 python3.7-dev。你注意到我的基础镜像是 python3.7-slim-buster 了吗?我认为这个命令适用于 ubuntu。但我想使用一些轻量级的东西,这样我的部署就不会花费太多时间。
  • apt-get install -y software-properties-common 查看更新,确保在所有事情之前也运行 apt-get update
  • 这是什么意思?
  • 我不知道,错误日志在链接中。我无法从中获得任何见解。
  • 这意味着您应该安装 gpg ,但这与您的原始问题无关......
【解决方案2】:

那是因为您的图像没有包含 gdal-bin 包的存储库。所以你必须添加存储库(你可以看到指南here)并安装它:

RUN add-apt-repository ppa:ubuntugis/ppa && apt-get update && apt-get install -y gdal-bin python-gdal python3-gdal

【讨论】:

  • 是的,我知道我必须添加 repo。但是您提供的命令在此图像中不作为命令存在。它会引发 add-apt-repository 命令未找到。
  • 你注意到我的基础镜像是 python3.7-slim-buster 了吗?我认为这个命令适用于 ubuntu。但我想使用一些轻量级的东西,这样我的部署就不会花费太多时间。
  • 所以我认为你应该从源代码构建它以使图像尽可能轻。你可以看看这里看看他们是怎么做的github.com/perrygeo/docker-gdal-base
【解决方案3】:

如果你可以使用其他基础镜像,这里是一个安装了 gdal 的镜像:

FROM osgeo/gdal:ubuntu-small-3.2.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2021-04-02
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多