如何解决软件包不会安装在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 . .
谢谢!
解决方法
您似乎没有充分利用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
阶段。
您需要切换用户,因为您可能没有运行这些命令的权限。这样的事情应该起作用:
USER root
RUN apt-get update \
&& apt-get install -y tesseract-ocr-all
USER <switch back to previous user>
您需要弄清楚切换回默认用户的默认用户,您可能可以在Ubuntu文档中或使用whoami
找到该用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。