docker – 撰写卷没有出现在容器中

我试图build立一个docker-compose的堆栈docker-compose ,应该包含另一个容器里面。 这是运行一个开发环境与我所有的项目里面。

所以问题是应用程序源的音量没有出现在内置的映像上。

 MacOS Sierra Docker version 17.03.0-ce, build 60ccb22 Boot2Docker-cli version: v1.8.0 

我的目录树

 /dockers <======= one directory with all docker files for each project docker-compose.yml <======= The main image /project1 <======= dockerfile for each project Dockerfile /project2 Dockerfile /project3 Dockerfile /project1 <======= project1 source folder test.txt /project2 /project3 

我的docker-compose.yml

 project1: build: ./project1 volumes: - ../project1/:/src 

我的dockerfile为project1

 FROM python:2.7 RUN mkdir -p /src WORKDIR /src RUN echo "---------------------" RUN ls -la RUN echo "---------------------" 

所以我尝试构builddocker-compose文件

 $ sudo docker-compose build --no-cache 

然后,当我期望test.txt文件,它显示一个空的文件夹

 Building express ERROR: Cannot locate specified Dockerfile: Dockerfile ➜ docker git:(master) ✗ sudo docker-compose build --no-cache Building project1 Step 1/7 : FROM python:2.7 ---> ca388cdb5ac1 Step 2/7 : RUN mkdir -p /src ---> Running in 393a462f7a44 ---> 4fbeb32d88b3 Removing intermediate container 393a462f7a44 Step 3/7 : WORKDIR /src ---> 03ce193577ab Removing intermediate container b1cd746b699a Step 4/7 : RUN echo "--------------------------" ---> Running in 82df8a512c90 ---------------------------- ---> 6dea58ba5051 Removing intermediate container 82df8a512c90 Step 5/7 : RUN ls -la ---> Running in 905417d0cd19 total 8 drwxr-xr-x 2 root root 4096 Mar 23 17:12 . <====== EMPTY :( drwxr-xr-x 1 root root 4096 Mar 23 17:12 .. <====== EMPTY :( ---> 53764caffb1a Removing intermediate container 905417d0cd19 Step 6/7 : RUN echo "-----------------------------" ---> Running in 110e765d102a ---------------------------- ---> b752230fd6dc Removing intermediate container 110e765d102a Step 7/7 : EXPOSE 3000 ---> Running in 1cfe2e80d282 ---> 5e3e740d5a9a Removing intermediate container 1cfe2e80d282 Successfully built 5e3e740d5a9a 

卷是Docker中的运行时configuration。 因为它们是可configuration的,所以如果在构build阶段引用卷,那么本质上会创build一个潜在的无法检查的中断依赖关系。

我相信还有更多的技术原因 – 但是这不应该做。 将所有这些东西移动到运行时设置命令,你应该没问题。