当运行docker compose时,我得到python:can';t打开文件';manage.py';:[Errno 2]没有这样的文件或目录

当运行docker compose时,我得到python:can';t打开文件';manage.py';:[Errno 2]没有这样的文件或目录,python,docker,Python,Docker,这是我的Dockerfile: FROM python:3.6.1 # set working directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # add requirements (to leverage Docker cache) ADD ./requirements.txt /usr/src/app/requirements.txt # install requirements RUN pip install -r r

这是我的Dockerfile:

FROM python:3.6.1

# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# add requirements (to leverage Docker cache)
ADD ./requirements.txt /usr/src/app/requirements.txt

# install requirements
RUN pip install -r requirements.txt

# add app
ADD . /usr/src/app

# run server
CMD python manage.py runserver -h 0.0.0.0
这是我的docker-compose.yml:

version: '2.1'

services:

  users-service:
    container_name: users-service
    build: .
    volumes:
      - .:/usr/src/app
    ports:
      - 5001:5000 # expose ports - HOST:CONTAINER
这是我的项目目录的结构(我从中运行docker命令):

首先,我运行docker compose build,并获得以下输出:

Building users-service
Step 1/7 : FROM python:3.6.1
 ---> 74145628c331
Step 2/7 : RUN mkdir -p /usr/src/app
 ---> Using cache
 ---> 8b73b9540da2
Step 3/7 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 28d3452f6021
Step 4/7 : ADD ./requirements.txt /usr/src/app/requirements.txt
 ---> Using cache
 ---> e92c334820c2
Step 5/7 : RUN pip install -r requirements.txt
 ---> Using cache
 ---> db7ea8211cd1
Step 6/7 : ADD . /usr/src/app
 ---> 472c303e4297
Removing intermediate container 7ee1b497cde4
Step 7/7 : CMD python manage.py runserver -h 0.0.0.0
 ---> Running in 31ae97876314
 ---> 42c79e68f692
Removing intermediate container 31ae97876314
Successfully built 42c79e68f692
Successfully tagged flaskmicroservicesusers_users-service:latest
然后我运行docker compose up,返回错误:

Recreating users-service
Attaching to users-service
users-service    | python: can't open file 'manage.py': [Errno 2] No such file or directory
users-service exited with code 2

我在这里缺少什么?

从docker-compose.yml中删除卷,然后重新构建

version: '2.1'
services:
users-service:
  container_name: users-service
  build: .
  ports:
    - 5001:5000 # expose ports - HOST:CONTAINER
ubuntu上的docker compose存在问题。它无法装入卷。正如我所看到的,您希望将
装载到
/usr/src/app


更新代码后,您需要再次构建映像。

不要通过运行此
eval$(docker machine env
)在docker machine vm中运行应用程序。但是,如果已运行,请通过运行
eval$(docker machine env-u)取消docker machine的链接

我在Ubuntu上使用带有virtualbox驱动程序的docker机器时遇到了类似的问题。这是因为我的项目目录没有与docker机器共享。若要解决此问题,请将
cd
插入项目根目录,并在创建环境时指定以下标志:
--virtualbox共享文件夹==“$PWD:$PWD”

正如@Fartash所说,在ubuntu中以卷的形式装载文件夹有问题。为了解决此错误,您可以在docker中使用
命名卷

您只需在
docker compose
文件中定义新的命名卷,如下所示:

version: '2.1'

services:

  users-service:
    container_name: users-service
    build: .
    volumes:
      - app:/usr/src/app # the volume is defined at the end of this file
    ports:
      - 5001:5000

volumes: # You should add this and the following line
    app: # you can define any name

有关详细信息,您可以查看链接。

您是否尝试过以下指南?您可能错过了设置根项目目录或链接Python
manage.py
文件的步骤。@AdeelAhmad我正在关注。我现在将检查您发布的链接。您是否可以运行
docker compose run--rm users service pwd
和/或
docker compose运行--rm users service ls
,查看容器在哪个工作目录中启动,以及其中包含什么?@Arjen docker compose运行--rm users service pwd return/usr/src/app和docker compose运行--rm users service ls不返回任何内容。当您运行
docker exec-it container\u ID bash
时,您能找到您的源代码吗或者是我。谢谢你的把戏。[docker compose,版本:'3.7']所以不可能使用卷?@NajlaBioinfo谢谢,我也有同样的问题。删除卷挂载成功,但我需要挂载卷,有什么解决方法吗?我添加了一个新的答案,如果你能查看的话,我将不胜感激。:)谢谢
version: '2.1'

services:

  users-service:
    container_name: users-service
    build: .
    volumes:
      - app:/usr/src/app # the volume is defined at the end of this file
    ports:
      - 5001:5000

volumes: # You should add this and the following line
    app: # you can define any name