Dockerfile构建卷更改未反映在已安装的本地文件夹中? (OS X / boot2Docker)

时间:2015-12-04 02:09:48

标签: docker boot2docker dockerfile docker-compose

使用docker-compose我有一个 Dockerfile ,它为Sails JS应用程序构建了一个环境。在我的Dockerfile中,我使用sails new .(通过docker-compose映射到我的本地文件系统的文件夹)生成一个新的Sails脚手架项目。

当我运行docker-compose build时,一切似乎都成功构建。我在本地计算机上使用docker-compose up -d。然后我导航到主机上映射到我本地的文件夹,在HOST机器上的文件夹(vm)我生成了新的Sails项目。我希望期待看到docker-compose build坐在我本地文件夹中的HOST计算机上生成的所有文件。该文件夹虽然是 BLANK ?什么了?

我的基本 docker-compose 文件:

node:
  restart: "always"
  build: ./cnt/node
  ports:
    - "8080:8080"
  volumes:
    - ./src:/var/www/html
  # DEBUG: conveniently used to keep a container running
  command: /bin/bash -c 'tail -f /dev/null'

注意: ./src是我的源代码所在的本地文件夹。这将映射到HOST计算机上的/ var / www / html(webroot)。

以下是用于生成Sails脚手架的 ./ cnt / node Dockerfile 的最后几行:

WORKDIR /var/www/html
RUN sails new .
RUN touch test.txt

执行时所有内容都成功运行(无错误):

docker-compose build
docker-compose up -d

完成后我cd src检查我希望看到我的Sails app脚手架的源目录,但它是 EMPTY 。有没有搞错?!没有错误?我错过了什么?

是否与 docker-compose 文件有关,而且我建立的图像是通过build: ./cnt/node构建的,而LATER我将这些卷安装在compose文件中?在生成Sails脚手架之前,是否需要先安装VOLUMES

谢谢!

1 个答案:

答案 0 :(得分:2)

卷仅在运行时安装,build专门设计为可重现,因此在构建期间不允许任何外部操作。

您必须使用docker-compose run node ...

在主机上生成脚手架