我正在用MariaDB构建一个基于的Django应用程序的图像,我不知道应该向Dockerfile添加哪些依赖项,以便我的应用程序能够正确地连接到DB。
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?我以为我做了。据我所读到的在本文中,在这一讨论中,mariadb-dev在Alpine中,相当于基于Debian的系统中的default-libmysqlclient-dev。此外,阿尔卑斯中的mysql-客户端包只是一个虚拟包(包含mariadb、mariadb等)。下面是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时,我感到很困惑。有洞察力吗?
发布于 2019-05-10 06:58:09
您似乎缺少了MySQLdb Python模块,您应该安装mysqlclient Python包:pip install mysqlclient。
在高山上,pip将从源代码构建mysqlclient,因此在这个设置步骤中需要gcc和musl-dev,因此需要将apk del build-deps推迟到安装了apk del build-deps模块之后。
修正了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发布于 2021-06-30 07:20:39
主要是您需要安装mariadb-连接器-c软件包。但是只有这个包才会产生编译错误。因此,您还需要将gcc和musl包添加到Dockerfile中。这将使Django和MySQL在高寒图像中工作。
FROM python:3.8-alpine
RUN apk add gcc musl-dev mariadb-connector-c-devhttps://stackoverflow.com/questions/56048631
复制相似问题