この記事では、Dockerを活用してNestJSの開発環境を手軽に構築する方法を解説します。複雑な設定や環境の違いに悩むことなく、安定した環境でNestJSの開発を始めるためのガイドとして役立ててください。
はじめに: Dockerを利用したNestJSの開発環境の魅力
近年、バックエンド開発の現場で注目を集めているNestJSと、開発環境の構築を効率化するDocker。この組み合わせは、開発者にとって非常に魅力的なものとなっています。
NestJSの特徴
NestJSは、TypeScriptベースのNode.jsフレームワークであり、柔軟さとテストの容易さを前面に押し出しています。デコレーターとDI(依存性注入)を活用することで、簡潔で再利用可能なコードを書くことができます。また、ExpressやFastifyといった既存のNode.jsライブラリとの統合も容易で、開発の柔軟性が高まります。
Dockerの基本とその利点
Dockerは、アプリケーションとその依存関係をコンテナとしてパッケージ化する技術です。これにより、異なる環境でも同じ動作を保証することができます。開発から本番環境まで一貫した環境を提供することで、”私のマシンでは動く”という問題を解消します。また、Docker Composeを使用することで、複数のコンテナの管理や連携も簡単に行えます。
NestJSプロジェクトの初期設定
NestJSのインストールとプロジェクト作成
NestJSの開始は非常に簡単です。
npm install @nestjs/cli
次に、新しいプロジェクトを作成します。
nest new your-project-name
これで、NestJSの基本的なプロジェクト構造が生成されます。
初期のAPIエンドポイントの設定
デフォルトでは、src/app.controller.ts
に基本的なエンドポイントが設定されています。これを使用して、APIの動作を確認することができます。
Dockerを活用したNestJSの環境構築
Dockerfileの作成
ベースイメージの選択
NestJSはNode.js上で動作するため、ベースイメージとしてnode
を選択します。Dockerfile
をプロジェクトのルートに作成し、以下の内容を記述します。
FROM node
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "run", "start"]
アプリケーションの設定
上記のDockerfile
では、アプリケーションの依存関係をインストールした後、ソースコードをコンテナにコピーしています。また、ポート3000を公開し、NestJSアプリを開発モードで起動しています。
docker-compose.ymlの作成
サービスの定義
docker-compose.yml
ファイルをプロジェクトのルートに作成し、NestJSアプリケーションのサービスを定義します。
version: '3'
services:
nestjs-app:
build:
context: .
dockerfile: Dockerfile
ports:
- 3000:3000
データベースコンテナの設定
NestJSアプリケーションと連携するデータベースとして、例としてMySQLを使用します。
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test_db
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- 3306:3306
NestJSアプリの実行
コンテナの起動とログの確認
NestJSアプリケーションとMySQLのコンテナを同時に起動します。
docker-compose up -d
APIの動作確認
ブラウザを開き、http://localhost:3000
にアクセスすることで、NestJSアプリケーションの動作を確認できます。
まとめ: Dockerを活用したNestJS開発の効率化
開発環境のメリット
Dockerを使用することで、NestJSの開発環境は一貫性があり、再現性が高まります。また、他の開発者との共同作業もスムーズに行えるようになります。
今後の学びの方向性
この記事では、基本的なDockerとNestJSの組み合わせについて紹介しましたが、さらに高度な設定や最適化、他のミドルウェアとの連携など、深掘りするトピックは数多く存在します。継続的な学びを通じて、より効率的な開発環境を構築していきましょう。