Запустите клиент Python MySQL на образе Slim Python 3.6 Docker - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть работающая служба, работающая на питоне: образ 3.6-jessie.Я пытаюсь уменьшить его размер для ускорения холодного запуска без сервера.

Я пробовал изображения python: 3.6-alpine, python: 3.6-slim-buster и python: 3.6-slim-jessie.

Со всеми из них мне приходится устанавливать много дополнительных пакетов, и я получаю следующую ошибку, которую не могу исправить с помощью других пакетов:

ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

Мой текущий Dockerfile -

FROM python:3.6-jessie as build

ENV PYTHONUNBUFFERED 0
ENV FLASK_APP "api/app.py"

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /opt/venv

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

FROM python:3.6-slim-jessie
COPY --from=build /opt/venv /opt/venv
WORKDIR /opt/venv
RUN apt-get update
RUN apt-get --assume-yes install gcc
RUN apt-get --assume-yes install python-mysqldb

ENV PATH="/opt/venv/bin:$PATH"

RUN rm -rf configs tests draw_results env .idea .git .pytest_cache

EXPOSE 8000

CMD ["/opt/venv/run.sh"]

Соответствующие строки из require.txt:

mysqlclient==1.4.2.post1
PyMySQL==0.9.3
Flask-SQLAlchemy==2.3.2
SQLAlchemy==1.3.0

Run.sh - это просто моя команда запуска gunicorn.

Есть ли какой-нибудь пакет, который я могу использовать, чтобы исправить этоПоследняя проблема, есть ли какая-нибудь другая библиотека mysql, которую я должен использовать, или какой-то другой способ исправить это.Или я должен просто придерживаться полного Python: 3,6 изображения, когда я хочу клиента MySQL?

1 Ответ

1 голос
/ 26 сентября 2019

Попробуйте добавить эту строку в dockerfile:

RUN apt-get install -y libmysqlclient-dev
...