无法从docker compose文件将本地目录装入容器

无法从docker compose文件将本地目录装入容器,docker,docker-compose,docker-volume,Docker,Docker Compose,Docker Volume,在使用COPY命令之前,我想将项目的本地目录装载到docker容器中,但是当我进行更改时,我必须重新构建那些涉及bash脚本安装的部分 这是我的docker compose文件 version "3.7" services tesseract: container_name: tesseract build: context: ./app/services/tesseract/ dockerfile: Dockerfile volumes:

在使用COPY命令之前,我想将项目的本地目录装载到docker容器中,但是当我进行更改时,我必须重新构建那些涉及bash脚本安装的部分

这是我的
docker compose
文件

version "3.7"
services
 tesseract:
    container_name: tesseract
    build:
      context: ./app/services/tesseract/
      dockerfile: Dockerfile
    volumes:
      - ./app/services/tesseract:/tesseract/
我在构建时没有任何错误,在运行容器时,我的
WORKDIR-tesseract
为空

这是我的文件

FROM ubuntu:19.10

ENV DEBIAN_FRONTEND=noninteractive
ENV TESSERACT=/usr/share/tesseract

WORKDIR /tesseract

RUN apt-get update && apt-get install -y \
    build-essential \
    software-properties-common \
    python3.7 \
    python3-pip \
    cmake \
    autoconf \
    automake \
    libtool \
    pkg-config \
    libpng-dev \
    tesseract-ocr \
    libtesseract-dev \
    libpango1.0-dev \
    libicu-dev \
    libcairo2-dev \
    libjpeg8-dev \
    zlib1g-dev \
    libtiff5-dev \
    wget \
    git \
    g++ \
    vim

RUN git clone https://github.com/tesseract-ocr/tesseract $TESSERACT

COPY . /tesseract/
RUN chmod +x scripts/*
RUN scripts/compile_tesseract.sh
RUN scripts/langdata_lstm.sh scripts/start.sh
RUN pip3 install -r requirements.txt

ENV TESSDATA_PREFIX=/usr/share/tesseract/tessdata

docker卷的主要目标是

卷是保存Docker容器生成和使用的数据的首选机制

这意味着卷用于在容器生命周期之外持久化数据。如果要
将文件或目录复制到容器中,请使用
复制
说明

如果要将本地文件复制到Docker映像,请始终使用
COPY
,因为它更明确

使用Docker compose,您可以使用绑定装载卷


感谢您的解释,我不喜欢在服务目录中进行更改,因为它会重建容器的这一部分,并涉及到安装Dependencies您可以添加Dockerfile吗?也许我们可以在这方面做一些优化。顺便说一句,我在《入门指南》中发现,您可以挂载本地目录,这样您就不需要从这里重建容器使用docker compose编辑我的问题,您可以使用
绑定挂载
选项。关于Docker文件,理想情况下,您应该在映像的初始阶段安装依赖项,然后复制其余代码复制requirements.txt/tesseract/RUN pip3安装-r requirements.txt副本/tesseract/``这将在构建映像时节省大量时间,因为它将从缓存层提取依赖项。请检查答案,如果它解决了问题,请接受答案?