docker-machine容器中缺少本地文件

时间:2015-07-22 15:01:52

标签: django postgresql docker docker-compose docker-machine

所以我有一个简单的容器化django项目,另一个用于sass css编译的容器。

我使用docker-compose和docker-machine,但是当我启动它时,web容器没有任何我的本地文件(manage.py等),所以它会以{{{ 1}}错误。

让我解释一下:

file not found: manage.py

docker-compose.yml

web: build: . volumes: - .:/app ports: - "8001:5000" sass: image: ubuntudesign/sass command: sass --debug-info --watch /app/static/css -E "UTF-8" volumes: - .:/app

Dockerfile

本地目录中的标准django项目:

FROM ubuntu:14.04

# Install apt dependencies
RUN apt-get update && apt-get install -y python-dev python-pip git bzr libpq-dev pkg-config

FROM ubuntu:14.04

# Install apt dependencies
RUN apt-get update && apt-get install -y python-dev python-pip git bzr libpq-dev pkg-config

# Pip requirements files
COPY requirements /requirements

# Install pip requirements
RUN pip install -r /requirements/dev.txt

COPY . /app
WORKDIR /app

CMD ["python", "manage.py", "runserver", "0.0.0.0:5000"]

这里的错误是孤立的,我可以做到:

  

$ ls docker-compose.yml Dockerfile manage.py README.md static templates webapp

     

$ docker-compose run web python

这是真的:

  

can't open file 'manage.py': [Errno 2] No such file or directory

     

$ docker-compose run web ls

我认为使用远程static是一个问题,我已经尝试按照simple django tutorial进行操作,我认为本地文件共享的工作方式不同。

使用docker-machine时有什么不同之处?

1 个答案:

答案 0 :(得分:2)

Docker卷将文件从主机挂载到容器中。

因此,在这种情况下,您已将任何主机docker-machine所指向的当前目录挂载到容器中。除非你有一些时髦的虚拟机交叉安装(比如boot2docker),否则这不会与你正在运行的机器上的目录相匹配。