Я создаю образ приложения Django на базе Alpine с MariaDB, и я не могу понять, какую зависимость я должен добавить к себе, Dockerfile
чтобы мое приложение могло правильно подключиться к БД.
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
Ну, я думал, что да. Из того, что я прочитал в этой статье , в этом обсуждении , mariadb-dev
в Alpine это эквивалент системы default-libmysqlclient-dev
на основе Debian . Более того, пакет mysql-client в Alpine - это просто фиктивный пакет (содержащий 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 против MariaDB // Debian против Alpine, я чувствую себя смущенным. Любое понимание?
Похоже , вы пропустили MySQLdb
модуль Python, для которого необходимо установить mysqlclient
пакет Python: pip install mysqlclient
.
В Alpine 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] Удалить.
я говорю два предложения