python - 在 slim python 3.6 docker 镜像上运行 python mysql 客户端

标签 python mysql python-3.x docker dockerfile

我有一个在 python: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"]

requirements.txt 中的相关行:
mysqlclient==1.4.2.post1
PyMySQL==0.9.3
Flask-SQLAlchemy==2.3.2
SQLAlchemy==1.3.0

run.sh 只是我的 gunicorn 启动命令。

有没有我可以用来解决最后一个问题的包,是否有其他一些我应该使用的 mysql 库或其他一些方法来解决这个问题。或者当我想要一个 mysql 客户端时,我应该坚持使用完整的 python:3.6 图像吗?

最佳答案

尝试将此行添加到 dockerfile:

RUN apt-get install -y libmysqlclient-dev

关于python - 在 slim python 3.6 docker 镜像上运行 python mysql 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58110882/

相关文章:

python - 计算数组中的邻居值

python - 根据多个条件删除 PySpark 数据框中的行

php - MySQL/phpMyAdmin 查询行计数(1 行)与 mysql_num_rows 的计数(0 行计数)

python-3.x - 如何将 Pandas df 刻度数据重新采样为 5 分钟的 OHLC 数据

python - 在 PyQt 中刷新 QTextEdit

php - MySQL 'bind_param' 语句似乎不起作用 - 使用 Cake 定制

Mysql With Rollup 没有运行我预期的

python - 如何获得每组超过 X 次的连续相同单词的平均值?

python - UHF RFID 阅读器和 Python

python - PyMySQL Python 3 Django VirtualEnv MySQLdb