手軽にangular-cliをdockerで動かしてさわってみる

手軽に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}'`
同じタグの記事: Angular
同じタグの記事: Docker
同じカテゴリの記事: Linux