【问题标题】:"No such file or directory" when building Docker image构建 Docker 映像时“没有这样的文件或目录”
【发布时间】:2021-05-26 22:01:48
【问题描述】:

我有一个现有的工作 Dockerfile,我想更新它以获得更好的结构,并允许我对应用程序目录的一部分进行卷挂载以启用持久性。

文件夹结构为:

.git/
.gitignore
Dockerfile
README.md
Sorter.py
WebService.py
requirements.txt

当前工作的 Dockerfile 是:

FROM python:3.8-alpine
ADD . /
RUN pip install -r requirements.txt
EXPOSE 5000
CMD [ "python", "./WebService.py" ]

我现在想简单地不在根目录中执行此操作,因此我执行以下操作:

FROM python:3.8-alpine
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["WebService.py"]

我构建了映像“docker build -t”,并使用与第一个 buildscript 相同的 docker-compose 文件运行它 - 我得到了错误:

"python: can't open file '/app/WebService.py': [Errno 2] No such file or directory"

【问题讨论】:

    标签: python docker build dockerfile


    【解决方案1】:

    问题在于这一行WORKDIR /app,正如您所见,Docker 尝试运行文件/app/WebService.py,但您没有它。您的文件位于 . 而非 app 文件夹中。因此,要么您应该创建 app 文件夹并将您的 WebService.py 放在该文件夹中,要么只需删除 WORKDIR /app

    【讨论】:

    • 但如果没有 WORKDIR 命令,我最终会将所有文件转储到 /root 中,这是我不想要的,因为我希望能够在运行时进行卷挂载之后的容器,我认为这是可取的(甚至可能)。您能否提出一个工作 Dockerfile,其中应用程序文件将放在“app/”目录中并从那里运行? @razmik-melikbekyan
    • 尝试:``` COPY 。 /WORKDIR/```
    【解决方案2】:

    这是我找到的解决方案:

    FROM python:3.8-alpine
    RUN mkdir /app
    ADD . /app
    WORKDIR /app
    RUN pip install -r requirements.txt
    EXPOSE 5000
    CMD [ "python", "./WebService.py" ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2021-10-08
      相关资源
      最近更新 更多