docker – 撰写音量没有正确安装

我正在关注testdriven.io上的烧瓶/docker教程。 在第一部分第三部分Dockerconfiguration中,我按照说明将项目目录作为一个卷装入Docker容器中进行开发。 不幸的是,按照教程中的说明,不能正确地使用docker-compose装入卷。 相反,容器内的目录是空的。

以下是有问题的容器的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 

相关目录是users-service容器内的/ usr / src / app目录。 当我做:

 >> docker-compose build >> docker-compose up -d >> docker-compose run users-service bash 

当我在容器内部时,我在正确的目录(/ usr / src / app)中,但目录是空的。 这也会导致CMD失败,因为它找不到位于项目目录根目录下的manage.py文件。

我已经看到其他post堆栈溢出与类似的标题,不幸的是没有解决scheme已经能够解决我的问题。 我已经尝试了从相对到绝对的方式改变本地音量path,结果没有任何不同。感谢您提前帮助任何能够帮助他人的人。

编辑:

运行docker inspect容器,下面是在MountsConfigVolume下find的信息:

 "Mounts": [ { "Type": "bind", "Source": "/home/jonathan/projects/flask-microservices-users", "Destination": "/usr/src/app", "Mode": "rw", "RW": true, "Propagation": "rprivate" } ], ... "Config": { ... "Image": "flaskmicroservicesusers_users-service", "Volumes": { "/usr/src/app": {} }, "WorkingDir": "/usr/src/app", ... 

问题是无法将卷挂载到容器中的现有path,并希望该path中的数据被同步。 这不是如何unix卷挂载工作。

可以在这里find一个解释:

https://github.com/moby/moby/issues/32203

看看这里,如果你需要在一个容器内持久化数据:

https://github.com/moby/moby/issues/4361#issuecomment-36317097

Dockerfile中删除以下内容

 # add app ADD . /usr/src/app 

查看答案在这里获取更多信息:

https://stackoverflow.com/a/27753725/1799408