Sti*_*ian 4 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
Run Code Online (Sandbox Code Playgroud)
我目前的 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"]
Run Code Online (Sandbox Code Playgroud)
requirements.txt 中的相关行:
mysqlclient==1.4.2.post1
PyMySQL==0.9.3
Flask-SQLAlchemy==2.3.2
SQLAlchemy==1.3.0
Run Code Online (Sandbox Code Playgroud)
run.sh 只是我的 gunicorn 启动命令。
有没有我可以用来解决最后一个问题的包,是否有其他一些我应该使用的 mysql 库或其他一些方法来解决这个问题。或者当我想要一个 mysql 客户端时,我应该坚持使用完整的 python:3.6 图像吗?
ssi*_*nik 11
我正在使用python:3.7-slim和使用以下命令
RUN apt-get -y install default-libmysqlclient-dev
尝试将此行添加到 dockerfile 中:
RUN apt-get install -y libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3996 次 |
| 最近记录: |