データベース環境変数の設定

さまざまなプラットフォームでのDATABASE_URLと関連環境変数の設定方法。.envファイル、Vercel、Heroku、AWS、Docker、CI/CDパイプラインを解説します。

Best Practices

詳細な説明

データベース接続の環境変数

データベース接続文字列を環境変数に保存することは、認証情報をコードベースから除外するための標準的なアプローチです。

.envファイル(ローカル開発)

プロジェクトルートに.envファイルを作成します:

# データベース
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/myapp"

# 個別変数(代替)
DB_HOST="localhost"
DB_PORT="5432"
DB_NAME="myapp"
DB_USER="postgres"
DB_PASSWORD="postgres"
DB_SSL="false"

フレームワークまたはdotenvのようなライブラリで読み込みます:

require('dotenv').config();
// Next.jsでは.env.localが自動的に読み込まれます

プラットフォーム別の設定

Vercel

vercel env add DATABASE_URL production
# プロンプトが表示されたら接続文字列を貼り付け

またはVercelダッシュボード:Project Settings > Environment Variables。

Vercelはデータベース統合(Vercel Postgres、Neon、PlanetScale)の環境変数を自動的に注入します。

Heroku

heroku config:set DATABASE_URL="postgresql://user:pass@host:5432/db"

Herokuはデータベースアドオン(Heroku Postgres、JawsDB MySQLなど)を追加するとDATABASE_URLを自動設定します。

AWS(ECS / Lambda)

ECSの場合、タスク定義で環境変数を設定します:

{
  "containerDefinitions": [{
    "environment": [
      { "name": "DATABASE_URL", "value": "postgresql://..." }
    ]
  }]
}

Lambdaの場合、関数設定で設定するか、ランタイムルックアップでAWS Secrets Managerを使用します。

Docker / Docker Compose

services:
  app:
    environment:
      - DATABASE_URL=postgresql://user:pass@postgres:5432/mydb
    # または.envファイルを参照:
    env_file:
      - .env

複数環境

環境ごとに別の.envファイルを使用します:

.env                # デフォルト / 共有値
.env.local          # ローカルの上書き(gitignore対象)
.env.development    # 開発環境固有
.env.production     # 本番環境固有(gitignore対象)
.env.test           # テスト環境固有

Next.jsはこれらを優先順位に従って読み込みます。.env.localの変数は.envを上書きします。

CI/CDパイプライン

GitHub Actions

env:
  DATABASE_URL: ${{ secrets.DATABASE_URL }}

steps:
  - run: npm test

GitLab CI

variables:
  DATABASE_URL: $DATABASE_URL  # GitLab CI/CD設定で設定

セキュリティチェックリスト

  • .env.env.local.env.production.gitignoreに追加
  • 本番ではプラットフォーム固有のシークレットストレージを使用
  • 完全なDATABASE_URLをログに出力しない — パスワードをマスク
  • 環境ごとに異なる認証情報を使用
  • 認証情報を定期的にローテーション

ユースケース

ローカル開発、ステージング、本番環境にまたがる適切な環境変数管理で新プロジェクトをセットアップする、またはハードコードされた認証情報から環境ベースの設定に移行する。

試してみる — Connection String Builder

フルツールを開く