ナガモト の blog

Full Cycle Developerを目指すエンジニアが有用そうな技術記事や、ポエムのようなよしなしごとを投稿するブログです。

Angular 環境をDockerで作成

先日自分のポートフォリオとしてサイトを作成を始めたところ、nodeやangular/cliのversionが上がっており、version管理でつまづいてしまいました。

nodebrewやnvmを用いてversion管理してもいいのですが、全く汚染されない環境を使いたいと思い、DockerでAngularアプリの開発環境を整えてみました。

Dockerはコンテナ型の仮想環境を扱う技術で、シンプルな流れは、

Dockerfileという設計図を元にしてimageを作成し、imageを元にcontainerを起動する

となります。

作業の概要はこの通りです。

  • Dockerのインストール
  • Dockerfile作成
  • imageの作成
  • container起動

Dockerのインストール

Get Started with Docker | Docker

上記より、自身の環境に合わせたものをインストールしてください。

私はDocker Desktop (Mac)を利用しています。

Dockerfile作成

まずはDockerfileを作成します。 ファイル名は「dockerfile」で拡張子はありません。

FROM node:10.15.0

RUN npm install -g @angular/cli@7.1.4

EXPOSE 4200

公式のnodeのimageをベースにし、

angular/cliをインストールし、

アプリを立ち上げるポート4200を解放する

という内容になっています。

imageの作成

Dockerfileを置いているフォルダで下記コマンドを実行します。

$ docker build -t angular-env:latest .

Dockerfileに基づきimageを作成しています。

オプションでimage名やタグ名を指定しています。

container起動

$ docker run -it --hostname angular-env --name angular-env -v $PWD:/mnt/ng-app -p 4200:4200 angular-env:latest bash

angular-env:latestのimageに基づきcontainerを作成し、container内のbashを起動します。

オプションでホストなどの命名や、ホストへファイルをマウントするフォルダの設定、解放したポートの接続も行なっています。

起動されたbashで/mnt/ng-appにcdし、ng newでAngularアプリを作成するとファイルはホスト側にも同期されるため、ホスト側からエディタで編集し、container側で起動するということができるようになりました。

最後に

静的なアプリはこれだけで十分ですが、APIを利用するようなアプリを作成する場合は、Docker composeやk8sを利用する必要があります。

いずれ、その環境構築も記事にできたらと思います。