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
容器,下面是在Mounts
和Config
– Volume
下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
查看答案在这里获取更多信息: