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的末尾。