build立一个可以执行npm任务的web应用程序

在我发布任何configuration之前,我尝试解释我想要存档的内容,并想提及,我是docker工人。

为了使path对话更容易,让我们假设我们谈论的项目“docker我!” 它位于“X:\ docker-projects \ docker-me-up”中。

目标:

我想用不同的内容运行多个nginx项目,每个项目代表一个专门的构build。 在开发过程中[docker-up up -d]容器应该立即更新; 这工作正常。

棘手的部分是,我想从我的主机直接外包npm [ http://gruntjs.com]到容器/图像,所以我能够debugging和开发,无论我在哪里,只需安装docker。 因此,npm必须安装在“服务”中,并且需要初始化观察者。

每个项目都被封装在Docker主机/内部版本的自己的文件夹中,除了本身,不应该有任何其他的知识。

我的解决scheme

我已经尝试了许多不同的版本,用“volumes_from”等,但我决定告诉你,因为它已经缩小,但仍然完整。

泊坞窗,compose.yml

version: '2' services: web: image: nginx volumes: - ./assets:/website/assets:ro - ./config:/website/config:ro - ./www:/website/www:ro links: - php php: image: php:fpm ports: - "9000:9000" volumes: - ./assets:/website/assets:ro - ./config:/website/config:ro - ./www:/website/www:ro app: build: . volumes: - ./assets:/website/assets - ./config:/website/config:ro - ./www:/website/www 

Dockerfile

 FROM debian:jessie-slim RUN apt-get update && apt-get install -y \ npm RUN gem update --system RUN npm install -g grunt-cli grunt-contrib-watch grunt-babel babel-preset-es2015 RUN mkdir -p /website/{assets,assets/es6,config,www,www/js,www/css} VOLUME /website WORKDIR /website 

问题:

正如你所看到的,“数据”服务包含npm,并且应该能够执行一个npm命令。 但是,如果我运行“docker-up up -d”,一切正常。 我可以编辑页面内容,使用它等,但是数据容器没有运行,因此无法执行任何npm命令。 除非我有一个巨大的逻辑错误; 这是很有可能的;-)

环境:

  • Windows 10专业版[up2date]
  • 使用docker的共享驱动器
  • Docker版本1.12.3,版本6b644ec
  • docker机0.8.2版,build e18a919
  • docker合成版本1.8.1,build立004ddae

在您调用docker-compose up ,您可以使用以下命令获取app容器的交互式shell:

 docker-compose run app 

您也可以使用以下命令运行一次性命令:

 docker-compose run app [command] 

Dockerfile docker-compose up之后,你的app容器没有运行的原因是你的Dockerfile没有定义一个服务。 对于app作为服务运行,您需要通过添加类似于以下内容来使线程在容器的前台运行:

 CMD ./run-my-service 

到Dockerfile的末尾。