所以我有一个简单的容器化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时有什么不同之处?
答案 0 :(得分:2)
Docker卷将文件从主机挂载到容器中。
因此,在这种情况下,您已将任何主机docker-machine所指向的当前目录挂载到容器中。除非你有一些时髦的虚拟机交叉安装(比如boot2docker),否则这不会与你正在运行的机器上的目录相匹配。