docker-compose volume not mounting correctly
我正在遵循testsdriven.io上的flask/docker教程。在第三节docker config的第一部分中,我按照说明将项目目录作为卷装入docker容器中进行开发。不幸的是,遵循本教程中的说明并不能使用Docker Compose正确安装卷。相反,容器中的目录是空的。
下面是有关容器的dockerfile。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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文件
1 2 3 4 5 6 7 8 9 10 11 | version: '2.1' services: users-service: container_name: users-service build: . volumes: - '.:/usr/src/app' ports: - 5001:5000 # expose ports - HOST:CONTAINER |
相关目录是用户服务容器内的/usr/src/app目录。当我这样做的时候:
1 2 3 | >> docker-compose build >> docker-compose up -d >> docker-compose run users-service bash |
当我在容器中
我还看到过类似标题的堆栈上的其他贴子溢出,不幸的是,没有一个解决方案能够解决我的问题。我试过将本地卷路径从相对更改为绝对,但结果没有任何差异。提前感谢任何能够帮助他人的人。
编辑:
在容器上运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | "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", ... |
问题是,您不能将卷装载到容器中的现有路径,并且期望该路径中的数据同步。这不是Unix卷装载的工作方式。
这里可以找到一个解释:
网址:https://github.com/moby/moby/issues/32203
如果需要使容器内的数据持久化,请查看以下内容:
https://github.com/moby/moby/issues/4361问题注释-36317097
从Dockerfile中删除以下内容:
1 2 | # add app ADD . /usr/src/app |
查看此处的答案了解更多信息:
https://stackoverflow.com/a/27753725/1799408