質問: Dockerを使用して間もないエンジニアです。 宜しくお願い致します。 私の過去質問の続きになるのですが、 Docker for mac vaersion:1.12.1 mac OS X Yosemite https://github.com/akveo/ng2-admin (GitよりDL) こちらの環境で開発環境を構築しようとしています。 Dockerで、gitのDockerfileからbuildし、imageを作成。runを実行し、ブラウザで反映できました。 docker run時に、volumeのオプションでホストOSへディレクトリの共有も成功しました。 コンテナ内に入って -npm start -npm run prebuild:prod && npm run build:prod && npm run server:prod この2つのコマンドを叩きます。 2つ目のコマンドを叩かないとローカルでのファイルが共有できません。 dockerの機能なのか、npmの機能で可能かわからないのですが、即時反映することは可能なのでしょうか? npm startをして、ローカルでファイルを編集すると、編集を受け付けてnpmはbundleを自動的にし直します。 しかし、 npm run prebuild:prod && npm run build:prod && npm run server:prod こちらを叩くと、ローカルでのファイル編集は受け付けずに、1度exitし再度同じコマンドを叩かないと変更が反映されません。 docker run時に行ったオプションとして、 docker run --name angulartest -v ~/Docker/ng2-admin-master/src:/var/www/src -d -p 8888:8080 コンテナ名:タグ名 こちらになります。 dockerの問題なのか、node.jsのnpmパッケージ管理ツールの使い方の問題なのか判断出来ずにいます。 どなたかご教示の方宜しくお願い致します。
回答: こんにちは、先日関連する件で回答させていただいたものです。 () TypeScriptやSassのソースファイルは、編集してもそのままではアプリケーションに反映されません。 ソースファイルとは別のディレクトリに、ビルドという処理を通してJavaScriptやCSSに変換されたものを配置します。 (通常 dist とかいう名前のフォルダ) アプリケーションはそちらを見て起動する形になります。 この手のアプリケーションは、開発段階ではソースに変更を加えたら即時でビルドしてdist側に反映させるためのプロセスを起動させているので、擬似的に即時反映される状態を作っています。 dockerのコンテナを起動して、アプリケーションを立ち上げる後でも前でもいいのですが、ソースファイルの変更を検出して、変更があったらビルドさせるコマンドを打ってみてはいかがでしょうか。 (#前も回答のところでも触れています) ``` # コンテナが起動したらexecでコンテナに入る $ docker exec -it angulartest /bin/bash # 入った先で watchを起動させる # cd /var/www/src # npm run watch:dev ``` watchコマンドを実行したまま、エディタ側で変更してみてください。 ちゃんと変更が検出できていたら、ビルドの処理が流れますので、ブラウザをリロードすると反映されていると思います。 もし本題とずれていましたらご容赦ください...