- クラウド技術
Nuxt3デプロイ用Dockerファイル記述方法
- #VueJS
デプロイ用DockerイメージをビルドするためのDockerファイルの記述方法について説明したいと思います。AWS ECSやEC2上でDockerを使用する際にはDockerイメージをECRなどのレジストリからイメージを取得してDockerコンテナを起動します。サーバー上でDockerコンテナを起動するためには予めDockerイメージをビルドして、レジストリにプッシュしておかなければなりません。
Nuxt3用Dockerファイル
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
1 2 3 4 5 6 7 8 |
FROM {{ECR_INFRA_REPOSITORY_NAME}}:node-18.16.0 AS builder ENV NITRO_PRESET=node_cluster WORKDIR /app COPY . . RUN yarn install RUN yarn build |
1 2 3 4 5 6 7 8 9 |
FROM {{ECR_INFRA_REPOSITORY_NAME}}:node-18.16.0-slim WORKDIR /app ENV TZ Asia/Tokyo RUN addgroup exampleGroup && adduser exampleUser -ingroup exampleGroup USER exampleUser COPY --from=builder /app/.output . EXPOSE 3000 ENTRYPOINT ["node", "server/index.mjs"] |
このDockerファイルで行っていることは主に6つです。
- ローカルに存在するソースコードをコピーする(COPY . .)
- 2. ライブラリをインストールする(RUN yarn build)
- 3. ソースコードのビルド(RUN yarn build)
- 4. 実行ユーザーをrootから新規に作成したユーザーに変更(User exampleUser)
- 5. builderでビルドしたファイルをコピーする(Copy –from=builder /app/.output .)
- 6. ビルドしたファイルを実行(ENTRYPOINT [“node”, “server/mjs”]
From句が2つ存在しますが、これはマルチステージビルドというDockerの記述方法になります。前半の部分でソースコードのビルドを行い、後半の部分がAWSのサーバーで実行されるDockerイメージになります。後半のCopy –from=builder /app/.output . の部分で前半の部分でビルドしたファイルをコピーしています。--from=builderは一行目のas builderと対応しておりbuilderの/app/.outputディレクトリを現在のイメージにコピーしています。
{{ECR_INFRA_REPOSITORY_NAME}}はECRに予めアップロードしたイメージ名になります。おそらく実際にイメージをビルドしてECRなどにプッシュするのはCICDツールになると思うので環境変数としてECR_INFRA_REPOSITORY_NAMEをCICDツールで設定します。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>