docker-compose体积未出现在容器中

时间:2017-03-23 17:23:24

标签: docker docker-compose dockerfile boot2docker

我正在尝试使用一个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

project1

的dockerfile
FROM python:2.7

RUN mkdir -p /src

WORKDIR /src
RUN echo "---------------------"
RUN ls -la
RUN echo "---------------------"

所以我尝试构建docker-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

1 个答案:

答案 0 :(得分:0)

卷是Docker中的运行时配置。因为它们是可配置的,所以如果您在构建阶段引用卷,那么您实际上将创建一个可能无法检查的损坏依赖项。

我确信有更多技术原因 - 但它确实无法完成。将所有内容移动到运行时设置命令,您应该没问题。