我正在使用MariaDB构建Django应用程序的基于Alpine的映像,但我不知道应该添加哪个依赖项,以便我的应用程序可以正确连接到数据库。Dockerfile
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
好吧,我以为我做到了。从我在本文中的讨论中所看到的,mariadb-dev
在Alpine中等同default-libmysqlclient-dev
于基于Debian的系统。此外,Alpine中的mysql-client包仅仅是一个伪包(包含mariadb-dev,mariadb-client等)。这是Dockerfile
:
# pull official base image
FROM python:3.7-alpine
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# set work directory
WORKDIR /usr/src/cms
# install mysqlclient
RUN apk update \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add --no-cache mariadb-dev\
&& apk del build-deps
# install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /usr/src/cms/Pipfile
RUN pipenv install --skip-lock --system --dev
# copy entrypoint.sh
COPY ./entrypoint.sh /usr/src/cms/entrypoint.sh
# copy project
COPY . /usr/src/cms/
# run entrypoint.sh
ENTRYPOINT ["/usr/src/cms/entrypoint.sh"]
我尝试添加mariadb-client
,改为使用mysql-client
。我也尝试添加RUN pip install django-mysql
。一切似乎都没有改变。我成功地构建了Postgres Django应用程序,没有任何问题,但是当涉及MySQl vs MariaDB // Debian vs Alpine时,我感到困惑。有见识吗?
似乎您缺少MySQLdb
Python模块,应该为其安装mysqlclient
Python软件包:pip install mysqlclient
。
高山,PIP将建立mysqlclient
从源头,所以你需要gcc
和musl-dev
该设置步骤,因此你需要推迟apk del build-deps
到安装Python模块之后。
修复了Dockerfile片段:
RUN apk update \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add --no-cache mariadb-dev
...
RUN pip install mysqlclient
RUN apk del build-deps
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句