NestJSで起動するポートを.envから参照して起動する設定

NestJSアプリを.env
で定義したポートで起動する方法を解説します。
環境ごとに異なるポートを設定できるため、開発やデプロイ時に便利です。
環境変数の管理を可能にする設定
環境変数を管理するために@nestjs/config
を導入します。
以下のコマンドでインストールしてください。
shyarn add @nestjs/config
.env
ファイルでポートを定義する
プロジェクトのルートディレクトリに.env
を作成し、ポート番号を定義します。
例えば、ポートを3000
に指定する場合は以下のように記述してください。
envPORT=3000
NestJSの設定モジュールを適用する
NestJSのConfigModule
をAppModule
にインポートし、環境変数を読み込むように設定します。
isGlobal: true
を指定すると、全てのモジュールで環境変数を利用できます。
typescriptimport { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
アプリケーション起動時にポートを設定する
ConfigService
を使用し、.env
のポート番号を取得してアプリケーションを起動します。
環境変数が未定義の場合は、デフォルト値3000
を使用するように設定してください。
typescriptimport { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ConfigService } from '@nestjs/config';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const configService = app.get(ConfigService);
const port = configService.get<number>('PORT') || 3000;
await app.listen(port);
console.log(`Application is running on: http://localhost:${port}`);
}
bootstrap();
環境変数を反映してアプリを起動する
以下のコマンドでNestJSアプリケーションを起動してください。
.env
に設定したポートでアプリが動作します。
shyarn start
設定手順のまとめ
@nestjs/config
をインストールする.env
でポート番号を設定するConfigModule
をAppModule
に追加するmain.ts
でConfigService
を利用してポートを取得するnpm run start
でアプリを起動する
この設定により、.env
の値を変更するだけで簡単にポートを切り替えられます。
環境ごとに適したポートで動作させたい場合に有効です。
- article
NestJS アーキテクチャ超図解:DI コンテナ/プロバイダ/メタデータを一気に把握
- article
NestJS と GraphQL を組み合わせた型安全な API 開発
- article
【実践】NestJS で REST API を構築する基本的な流れ
- article
NestJS でのモジュール設計パターン:アプリをスケーラブルに保つ方法
- article
【入門】NestJS とは?初心者が最初に知っておくべき基本概念と特徴
- article
Prisma と NestJS を組み合わせたモダン API 設計
- article
Gemini CLI のアーキテクチャを図解で理解:入力 → 推論 → 出力のデータフロー全貌
- article
Pinia アーキテクチャ超図解:リアクティビティとストアの舞台裏を一枚で理解
- article
FFmpeg アーキテクチャ超図解:demuxer→decoder→filter→encoder→muxer の流れを一望
- article
Obsidian 2025 年ロードマップ総ざらい:Properties/Canvas/Live Preview の現在地
- article
ESLint Flat Config 完全理解:eslint.config.js 時代の設計指針
- article
Nuxt レンダリング戦略を一気に把握:SSR・SSG・ISR・CSR・Edge の最適解
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来