使用 GDAL 在 docker 容器中运行 Django
Posted
技术标签:
【中文标题】使用 GDAL 在 docker 容器中运行 Django【英文标题】:Run Django in docker container with GDAL 【发布时间】:2022-01-20 10:41:01 【问题描述】:我目前正在尝试在 docker 容器中运行 Django 项目,为项目提供本地数据库。
该项目依赖于 GDAL,但在尝试安装需求时,它总是遇到同样的问题。以下是我的dockerfile:
RUN apt-get update
RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*
RUN wget \
https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& mkdir /root/.conda \
&& bash Miniconda3-latest-Linux-x86_64.sh -b \
&& rm -f Miniconda3-latest-Linux-x86_64.sh
RUN conda --version
RUN conda create -n gdal_test python=3.9
RUN activate gdal_test
RUN conda install gdal
RUN apt-get update
RUN apt-get -y install gcc
COPY requirements.txt requirements.txt
RUN python3 -m pip install -r requirements.txt
COPY . .
我的 requirements.txt 如下:
asgiref==3.3.1
bitstring==3.1.7
certifi==2020.12.5
cffi==1.14.4
chardet==4.0.0
class-registry==2.1.2
cryptography==3.3.1
decorator==4.4.2
decorators==2.0.7
Django==3.1.5
django-filter==2.4.0
django-mssql==1.8
Django-Verify-Email==0.0.4
djangorestframework==3.12.2
ecdsa==0.16.1
enum34==1.1.10
esptool==3.0
filters==1.3.2
GDAL==3.2.0
idna==2.10
pgxnclient==1.3.1
Pillow==8.1.0
psycopg2-binary==2.8.6
pycparser==2.20
pyserial==3.5
python-dateutil==2.8.1
python-http-client==3.3.1
pytz==2020.5
PyYAML==5.4.1
reedsolo==1.5.4
regex==2020.11.13
requests==2.25.1
self==2020.12.3
sendgrid==6.5.0
six==1.15.0
sqlparse==0.4.1
starkbank-ecdsa==1.1.0
style>=1.1.0
typing==3.7.4.3
update==0.0.1
urllib3==1.26.2
我得到的错误信息总是:
Building wheel for GDAL (setup.py): started
#17 35.55 Building wheel for GDAL (setup.py): finished with status 'error'
#17 35.55 ERROR: Command errored out with exit status 1:
#17 35.55 command: /root/miniconda3/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b4fotwdf/gdal_7d28262936544faa8ed19ca69c3b6f2a/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b4fotwdf/gdal_7d28262936544faa8ed19ca69c3b6f2a/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-sszyhfnn
我的解决方案已经用完了。
提前致谢。
【问题讨论】:
请张贴您的 requirements.txt 的内容。 感谢您的回答!我已经添加了 requirements.txt。但我也在上面的帖子中调整了我的代码并更新了它。 【参考方案1】:我发现了问题。 conda 安装修复了 GDAL 问题。但。安装 requirements.txt 时,GDAL 被第二次安装,这导致了错误,因为正常的 pip 安装无法与 GDAL 一起正常工作。
【讨论】:
以上是关于使用 GDAL 在 docker 容器中运行 Django的主要内容,如果未能解决你的问题,请参考以下文章
如何将运行在 Docker 容器中的 Flyway 连接到运行在 Docker 容器中的数据库?