構成を投稿する前に、何をアーカイブしたいのか、何を言及したいのかを説明しようとします。
パスの会話を簡単にするために、「Docker me up!」というプロジェクトについて話すとしましょう。にありX:\docker-projects\docker-me-up\
ます。
ゴール:
コンテンツが異なる複数の nginx プロジェクトを実行したいと思います。各プロジェクトは専用のビルドを表します。開発中 [ docker-compose up -d
] コンテナーは即座に更新される必要があります。これは正常に動作します。
トリッキーな部分は、npm [ http://gruntjs.com]をホストからコンテナー/イメージに直接外部委託することです。これにより、docker をインストールするだけで、どこにいてもデバッグと開発を行うことができます。したがって、npm を「サービス」にインストールし、ウォッチャーを初期化する必要があります。
各プロジェクトは、docker のホスト/ビルド上の独自のフォルダーにカプセル化されており、それ自体以外の知識を持ってはいけません。
私の解決策:
「volumes_from」などを使用してさまざまなバージョンを試しましたが、縮小されていますが完全な状態であるため、これを表示することにしました。
Docker-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
問題:
ご覧のとおり、「data」サービスにはnpmが含まれており、npm コマンドを実行できるはずです。しかし、実行するとdocker-compose up -d
すべてが機能します。ページのコンテンツを編集したり、操作したりできますが、データ コンテナーが実行されていないため、npm コマンドを実行できません。大きな論理エラーがない限り。これはかなり可能です;-)
環境:
- Windows 10 プロ [up2date]
- docker の共有ドライブを使用
- Docker バージョン 1.12.3、ビルド 6b644ec
- docker-machine バージョン 0.8.2、ビルド e18a919
- docker-compose バージョン 1.8.1、ビルド 004ddae