「手軽にIonicをdockerで動かしてさわってみる | hiro345」とあまり変わりませんが、dockerを手軽に使っていくということでメモ。
Angularのクイックスタートは「https://angular.io/docs/ts/latest/cli-quickstart.html」にあるので、これを参考に理解していくとよさそう。
Dockerfileは下記を用意すればいい。
FROM node:8.9.4-alpine WORKDIR /app RUN apk update && apk add -q git && \ npm i -g --unsafe-perm @angular/cli --no-progress
Ionicのときと同じでビルドして利用。ここでは「-u」でユーザーID, グループIDを指定することで生成されるファイルの所有者がrootにならないようにしています(dockerコマンドを実行するユーザーのユーザーID、グループIDを指定するとよい)。
$ docker build -t sssg/angular . $ docker run -it --rm -p 4200:4200 \ -u $UID:$GROUPS \ -v ${PWD}:/app \ -w /app --name angular-app001 sssg/angular sh
Dockerコンテナのシェルに入ったら、ng newでアプリを作る。設定ファイルでhostを0.0.0.0で指定する必要があるのでsedコマンドで修正。それからng serveで起動。
$ ng new app001 $ cd app001 $ sed -i 's%"defaults": {%"defaults": { "serve":{"port":4200, "host":"0.0.0.0"},%' \ .angular-cli.json $ ng serve
http://localhost:4200 でAngularアプリにアクセスができます。停止はCtrl+C。exitコマンドでDockerコンテナのインスタンスは停止。
(略) ~C $ exit
app001を作った後、一度Dockerコンテナを停止したなら、次回以降はng serveを実行して起動すればいい。停止はdocker stopコマンドで強制終了。
$ docker run -d -it --rm -p 4200:4200 \ -u=$UID:$GROUPS \ -v ${HOME}/workspace/docker:/app \ -w /app/app001 \ --name angular-quickstart \ sssg/angular ng serve $ docker stop `docker ps|grep angular-quickstart|awk '{print $1}'`