Docker for MacでAngular6の実行環境を構築
こんにちは、クラスメソッドの岡です。
今回Docker for MacでAngular6のアプリを実行できる環境を作ってみたのでご紹介したいと思います。
コードの編集はローカル(Dockerホスト)のVScodeでやりたいので、ローカルの作業ディレクトリとDockerコンテナをマウントしてみました。
Angularアプリの起動はコンテナ内で行います。
環境
・Docker 18.03.1-ce-mac65 (24312)
・Node.js 8.11.3
・AngularCLI 6.0.8
2018/06/21現在、Node.jsのActive LTSがver8となっているのでそちらを使っています。
詳しくはNode.jsのリリーススケジュールを確認してください。
dockerファイルの作成
まず作業ディレクトリに移動してdockerfileを作成します。(拡張子はなし)
FROM node:8.11.3 RUN npm install -g @angular/cli EXPOSE 4200
dockerイメージの作成
次にdockerfileをビルドしてdockerイメージを作成しましょう。
$ docker build -t docker-angular:test .
-tオプションでタグをつけます。
$ docker image ls //確認 REPOSITORY TAG IMAGE ID CREATED SIZE docker-angular test a4ac49ea9efa 1 minutes ago 741MB
コンテナの作成&起動
angularのプロジェクトを作成したい場所で実行します。
$ docker run -it --hostname docker-angular01 --name docker-angular01 -v $PWD:/mnt/angular-app -p 4200:4200 docker-angular:test bash root@docker-angular01:/# ←作成と同時に起動しrootにログインする
・-vでマウント 'ホストパス':'コンテナパス'
ホスト側でコードの編集ができるよう、「ホスト側の作業ディレクトリ」と「コンテナ上の/mnt」をマウントします。
・-pでポートフォワード
ホストのブラウザからアクセスできるようAngularがデフォルトで使用する4200ポートを結びつけます。
コンテナ内での作業
angularアプリを作成します。
cd mnt/ ng new angular-app
VScodeでの作業
VScodeで作業ディレクトリを開くとコンテナ内で作成したangularアプリが表示できます。 作業しやすいよう、VScodeのターミナルで起動中のコンテナに入ります。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4dbd5ete8e7j docker-angular:test "bash" 4 minutes ago Up 4 minutes 0.0.0.0:4200->4200/tcp docker-angular01 $ docker attach docker-angular01 root@docker-angular01:/mnt/angular-app#
コンテナに入りました。
続けてAngularアプリを起動します。
# ng serve --host 0.0.0.0 ** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ ** 「wdm」: Compiled successfully.
ブラウザからlocalhost:4200で画面が確認できます。
これでAngularアプリの開発ができるようになりました。
ngコマンド、npmコマンドを実行する際はコンテナ内で実行しましょう。
まとめ
AngularアプリをDockerで起動、ローカルで編集する方法をご紹介しました。
Angularはバージョンアップが頻繁にあるので、アプリ毎のバージョン管理や、バージョン毎の挙動を調べる時などに、Dockerで管理しておくとやりやすいかと思います。