【问题标题】:Docker build no No such file or directoryDocker build no 没有这样的文件或目录
【发布时间】:2022-01-15 22:18:42
【问题描述】:

从我试图运行命令的目录

sudo docker-compose -f project/docker/docker-compose.yml up

这是我得到的错误

    ubuntu@ip-172-31-90-166:~/tp3-securite-applicative$ sudo docker-compose -f project/docker/docker-compose.yml up
    Recreating docker_api-service-track-1_1 ... done
    Attaching to docker_api-service-track-1_1
    api-service-track-1_1  | python path is:
    api-service-track-1_1  | //project/
    api-service-track-1_1  | running the following python program
    api-service-track-1_1  | ./project/codeAPI/API.py ./project/codeAPI/front.py
    api-service-track-1_1  | python3: can't open file '//./project/codeAPI/API.py': [Errno 2] No such file or directory
    api-service-track-1_1  | python3: can't open file '//./project/codeAPI/front.py': [Errno 2] No such file or directory

这是我的 Dockerfile

FROM python:3
ADD ./run.sh /
ADD ./requirements.txt /
RUN pip3 install -r ./requirements.txt
CMD ["./run.sh", "./project/codeAPI/API.py", "./project/codeAPI/front.py"]

这是我的 docker-compose.yml

version: '3'

services:
  api-service-track-1:
    build:
      context: ../../
      dockerfile: ./project/docker/Dockerfile
    image: img_track1
    volumes:
      - ./:/mnt/app
    ports:
      - 5551:5551
    tty: true

我在 run.sh 中定义了我的 python 路径

#!/bin/bash

export PYTHONPATH=$PWD/project/
echo python path is:
echo $PYTHONPATH

echo running the following python program
echo $@
python3 "$1"
python3 "$2"

requirements.txt 包含一堆导入。

我尝试了多种方法来修改我的 run.sh 和我的 Dockerfile 来调整我的 python 路径,但我找不到我的 front.py 和 API.py。我是不理解路径的概念还是遗漏了一些明显的东西?

Saikiran Rudra 修正后编辑 1:

ubuntu@ip-172-31-90-166:~/tp3-securite-applicative$ sudo docker-compose -f project/docker/docker-compose.yml up
Creating network "docker_default" with the default driver
Creating docker_api-service-track-1_1 ... done
Attaching to docker_api-service-track-1_1
api-service-track-1_1  | python path is:
api-service-track-1_1  | //project/
api-service-track-1_1  | running the following python program
api-service-track-1_1  | ./project/codeAPI/API.py ./project/codeAPI/front.py
api-service-track-1_1  | /usr/local/bin/python3: can't find '__main__' module in '//./project/codeAPI/API.py'
api-service-track-1_1  | /usr/local/bin/python3: can't find '__main__' module in '//./project/codeAPI/front.py'

【问题讨论】:

  • 您永远不会将您的代码(或您包含的 PNG 文件)COPY 放入图像中。
  • @DavidMaze 为什么会这样?
  • 我不确定,但添加像 COPY project project 这样的行可能会有所帮助。您可以删除docker-compose.yml 文件中的volumes: 块。

标签: docker docker-compose path dockerfile


【解决方案1】:

我遇到了类似的问题,试试这个对我有用

在卷部分的 docker-compose.yml 中添加此行

volumes:
      - ./:/mnt/app
      - /project/codeAPI/API.py
      - /project/codeAPI/front.py

【讨论】:

  • 我刚刚做了那个修改,它检测到了我的两个文件(太棒了!)。但现在它正在这两个文件中寻找主要内容。我将在编辑中添加它,以便您理解。
  • 我认为您已将所有文件所需的文件复制到容器中,尝试在第二行 WORKDIR /usr/src/app 和 COPY 中添加它。 .在 Dockerfile 的最后第二行
  • 做到了!谢谢你。如果你有时间可以解释一下 COPY 行。 .意味着在我的 Dockerfile 中?
  • 第一条语句WORKDIR /usr/src/app设置目录位置(用于容器),这意味着您指定的所有相对路径都将与该路径有关,然后COPY . .这样做是复制将当前项目目录(在您的文件系统中)中的所有文件复制到您首先指定的 WORKDIR 目录中。这里的复制是指从你的文件系统复制到容器文件系统
猜你喜欢
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2012-02-26
  • 2020-04-27
相关资源
最近更新 更多