在我發佈任何配置之前,我嘗試解釋我想要存檔的內容並希望提及,我是docker的新手。構建一個可以執行npm任務的web應用程序
爲了讓路徑對話更容易,讓我們假設我們談論項目「Docker me up!」它位於「X:\ docker-projects \ docker-me-up \」中。
目標:
我想不同的內容運行多個nginx的項目,每個項目都代表一個專門的編譯。在開發期間[docker-compose up -d]容器應該立即更新;這工作正常。
這個棘手的部分是,我想從主機直接將npm [http://gruntjs.com]]外包到容器/圖像中,這樣我就可以通過安裝docker來進行調試和開發,無論我在哪裏。因此,npm必須安裝在「服務」中,並且需要初始化觀察者。
每個項目都封裝在Docker主機/內部版本的自己的文件夾中,除了本身,不應該有其他任何知識。
我的解決辦法:
我已經嘗試了許多不同的版本,以「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-compose up -d」,一切正常。我可以編輯頁面內容,使用它等。但是數據容器沒有運行,因此無法執行任何npm命令。除非我有一個巨大的邏輯錯誤;這是完全可能的;-)
環境:
- 視窗10臨[up2date的]
- 爲搬運工共用驅動器用於
- 多克爾版本1.12.3,構建6b644ec
- docker-machine version 0.8.2,build e18a919
- docker-compose version 1.8。1,建立004ddae