我有一个在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镜像?
apt-get update
,然后安装才能成功。 - Jari Turkiapython:3.9-slim
构建的容器中使用mysqlclient
来运行我的应用程序。然而,我收到了关于各种依赖项的错误。将default-libmysqlclient-dev
软件包添加到容器构建中解决了这些依赖项。 - Mr. Lance E Sloan