当运行docker-compose up时我得到python:无法打开文件'manage.py':[Errno 2]没有这样的文件或目录

时间:2017-06-22 08:26:42

标签: python docker

这是我的Dockerfile:

reselect

这是我的docker-compose.yml:

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命令):

version: '2.1'

services:

  users-service:
    container_name: users-service
    build: .
    volumes:
      - .:/usr/src/app
    ports:
      - 5001:5000 # expose ports - HOST:CONTAINER

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

├── docker-compose.yml
├── Dockerfile
├── env
│   ├── bin
│   ├── include
│   ├── lib
│   ├── lib64 -> lib
│   ├── pip-selfcheck.json
│   ├── pyvenv.cfg
│   └── share
├── manage.py
├── project
│   ├── config.py
│   ├── __init__.py
│   └── __pycache__
└── requirements.txt

然后我运行 docker-compose up ,返回错误:

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

我在这里缺少什么?

4 个答案:

答案 0 :(得分:7)

从docker-compose.yml中删除卷并重新构建。

version: '2.1'
services:
users-service:
  container_name: users-service
  build: .
  ports:
    - 5001:5000 # expose ports - HOST:CONTAINER

ubuntu上有docer-compose的问题。它无法安装音量。而且我可以看到你想要装载。到/ usr / src / app

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

答案 1 :(得分:0)

请勿通过运行此eval $(docker-machine env <your-vm>在docker-machine vm中运行您的应用程序。但是,如果有,请通过运行eval $(docker-machine env -u)

取消链接docker-machine

答案 2 :(得分:0)

我在Ubuntu上使用带有virtualbox驱动程序的docker-machine遇到了类似的问题。这是由于我的项目目录未与docker-machine共享。要解决此问题,请cd进入项目根目录,并在创建环境时指定以下标志:--virtualbox-share-folder=="$PWD:$PWD"

答案 3 :(得分:0)

正如@Fartash 所说,在 ubuntu 中将文件夹安装为卷存在问题。为了解决该错误,您可以在 docker 中使用 named volume

您可以简单地在 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

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