给你几种落地方案,你挑一种。
⸻
方案A(推荐):换成国内源再装
在 Dockerfile 里第一步就换成阿里/清华的 Debian 源,再装,能快很多。
FROM python:3.11-slim
# 1. 换源(以阿里为例,自己按地区改)
RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list && \
sed -i 's@security.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list
# 2. 再安装
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libreoffice-writer \
libreoffice-impress \
libreoffice-calc \
fonts-dejavu \
imagemagick \
&& rm -rf /var/lib/apt/lists/*
要点:
• 用国内镜像
• 用 --no-install-recommends,别装全家桶
• 只装你要的几个组件,不要写一个 libreoffice 把数据库、翻译、帮助文档全拉下来
⸻
方案B:做一个“基础镜像”只装 LibreOffice
你现在每次 docker-compose up --build 都要重装一遍 LibreOffice,当然慢。
可以先做一个单独的镜像:
# Dockerfile.base
FROM python:3.11-slim
RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
libreoffice-writer libreoffice-impress libreoffice-calc \
fonts-dejavu imagemagick \
&& rm -rf /var/lib/apt/lists/*
docker build -t ppt-base:latest -f Dockerfile.base .
然后你的业务镜像再基于它:
FROM ppt-base:latest
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "main.py"]
这样 LibreOffice 只装一次,后面就是秒级构建。
⸻
方案C:不要在容器里装,宿主机装好 + 挂进去
如果你这台 Ubuntu 机器已经能很快 apt install libreoffice,那可以:
1. 在宿主机装好 LibreOffice;
2. docker run 的时候把 /usr/bin/libreoffice、/usr/lib/libreoffice 挂进去;
3. 容器里只需要有调用路径。
这个最省时间,但要你机器上已经装好了。
⸻
方案D:缩小安装包
你现在写的是大概这样的:
apt-get install -y --no-install-recommends libreoffice libreoffice-writer libreoffice-impress ...
其实只要:
apt-get install -y --no-install-recommends libreoffice-impress
多数情况下 PPT→PDF/图片,impress 就够了;再配个字体就行。越少越快。
⸻
顺带再说一点
你现在看到的提示:
the attribute 'version' is obsolete
和你安装慢 不是一回事,这是 docker-compose v2 的提示,先不用管。
⸻
一句话版
• 慢,是因为你在 国外源里装一个 1GB 的 LibreOffice,而且是 在 Docker 里每次都装;
• 换国内源、精简包、做基础镜像,装一次就好了。
346

被折叠的 条评论
为什么被折叠?



