DockerでNestJSの開発環境を構築

この記事では、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の組み合わせについて紹介しましたが、さらに高度な設定や最適化、他のミドルウェアとの連携など、深掘りするトピックは数多く存在します。継続的な学びを通じて、より効率的な開発環境を構築していきましょう。

プログラミングスクールをお探しの方はこちら

フリーランス案件をお探しの方はこちら

エンジニア転職サイトをお探しの方はこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次