docker-machine 容器中缺少本地文件
local files missing from docker-machine container
所以我有一个简单的容器化 django 项目,还有另一个用于 sass css 编译的容器。
我使用 docker-compose 和 docker-机器,但是当我启动它时,网络容器没有我的任何本地文件(manage.py 等) 中,所以它因 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
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"]
以及本地目录下的标准django项目:
$ 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
我认为这是使用远程 docker-machine
s 的问题,我已尝试遵循 simple django tutorial,我认为本地文件共享的工作方式不同。
使用 docker-machine 时有什么不同?
Docker 卷将文件从 host 装载到容器中。
所以在这种情况下,您已经将 docker 机器指向的任何主机的当前目录装载到容器中。除非你有一些时髦的 VM 交叉安装正在进行(就像 boot2docker 那样),否则这不会匹配你 运行 所在机器上的目录。
所以我有一个简单的容器化 django 项目,还有另一个用于 sass css 编译的容器。
我使用 docker-compose 和 docker-机器,但是当我启动它时,网络容器没有我的任何本地文件(manage.py 等) 中,所以它因 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
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"]
以及本地目录下的标准django项目:
$ 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
我认为这是使用远程 docker-machine
s 的问题,我已尝试遵循 simple django tutorial,我认为本地文件共享的工作方式不同。
使用 docker-machine 时有什么不同?
Docker 卷将文件从 host 装载到容器中。
所以在这种情况下,您已经将 docker 机器指向的任何主机的当前目录装载到容器中。除非你有一些时髦的 VM 交叉安装正在进行(就像 boot2docker 那样),否则这不会匹配你 运行 所在机器上的目录。