软件包不会安装在 docker

Packages wont install in docker

我正在尝试从 Dockerfile 将 tesseract-ocr 安装到 docker。当我构建 Dockerfile 时,一切看起来都很正常,我没有收到任何错误,但是当我 运行 未安装容器 tesseract 时。

如果我使用 sudo docker exec -t -i <container_id> /bin/bash 访问容器并使用 apt-get install -y tesseract-ocr-all 手动安装 tesseract,它会安装并完美运行。为什么我在构建过程中尝试安装它时它不起作用?

我的 Dockerfile 如下所示:

FROM ubuntu:20.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
    && apt-get install -y tesseract-ocr-all
RUN tesseract --version

FROM python:3.7

WORKDIR ocr
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY . .

谢谢!

您需要切换用户,因为您可能没有 运行 这些命令的权限。这样的事情应该有效:

USER root
RUN apt-get update \
    && apt-get install -y tesseract-ocr-all
USER <switch back to previous user>

您需要弄清楚要切换回的默认用户是什么,您可以在 Ubuntu 文档或使用 whoami.

中找到它

看起来你在利用 Docker multi-stage builds 而没有意识到。

当你输入 FROM python:3.7 时,你实际上放弃了之前所做的一切,因为你开始了一个新的阶段。

我能看到的最简单的解决方案是移动

RUN apt-get update \
    && apt-get install -y tesseract-ocr-all
RUN tesseract --version

进入FROM python:3.7阶段,移除FROM ubuntu:20.04阶段。