NuxtJS
で作成したプロジェクトでDockerfile
を作成してみました。
その時のDockerfile
をメモしておきます。
Dockerfileの中身
FROM node:16.13.0 as build-stage
COPY . /app
WORKDIR /app
RUN npm install
RUN npm run generate
FROM nginx:1.20.0
COPY --from=build-stage /app/dist/ /usr/share/nginx/html
やってることとしてはまず、
FROM node:16.13.0 as build-stage
でnode
のビルドステージを宣言します。
次に、
COPY . /app
WORKDIR /app
でカレントディレクトリをapp
ディレクトリにコピーし、app
ディレクトリをWORKDIR
に設定します。
WORKDIR
であるapp
ディレクトリに対して下記のコマンドを実行します。
RUN npm install
RUN npm run generate
これでNuxtJS
のプロジェクトがビルドされます。
次に、Nginx
のビルドステージを宣言します。
FROM nginx:1.20.0
最後にnode
のビルドステージからビルドしたファイルをNginx
のドキュメントルートにコピーします。
COPY --from=build-stage /app/dist/ /usr/share/nginx/html
docker buildしてみる
下記のコマンドを実行してDocker
をビルドします。ビルドが成功するとDocker
のイメージが作成されます。
docker build -t <project-name>:<tag> .
「<project-name>
」と「<tag>
」は適宜置き換えて実行します。「<tag>
」は省略可能です。
下記のコマンドを実行することでDocker
のイメージが作成されたか確認できます。
docker images
コンテナを起動する
作成されたDocker
イメージを使用してコンテナを起動してみます。
docker run -p 8080:8080 <project-name>:<tag>
「<project-name>
」と「<tag>
」については先程の「docker images
」で確認できたリポジトリ名とタグを設定します。
「-p
オプション」ではポート番号を入力しますが、ここは環境に応じて書き換えます。
最後に
今後、NuxtJS
で作成したプロジェクトはこのDockerfile
をベースにしてイメージの作成とコンテナの起動ができるようになりました。
コメント