Merged PR 456: NestJSの環境変数を整理してバリデーションを修正

## 概要
[Task2769: NestJSの環境変数を整理してバリデーションを修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2769)

- 非必須の環境変数をチェックしないようにオプショナルを修正しました
- ローカルでのDBマイグレーションに必要なため、コンテナ起動時の`.env`ファイル読み込みを追加しました。
- 環境変数についてDB関連項目を残し、すべて`.env.local`に移動しました。

## レビューポイント
- 環境変数に対するチェックのオプショナル設定は適切か
- 環境変数をlocalに移動させたが問題ないか。

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
## 補足
- 不足している環境変数についてレビュー完了後にAppService、Wikiを整備しておきます。
This commit is contained in:
makabe.t 2023-10-02 07:13:34 +00:00
parent 90a4d99cf5
commit 3e0c483b57
4 changed files with 45 additions and 70 deletions

View File

@ -2,6 +2,7 @@ version: '3'
services: services:
dictation_server: dictation_server:
env_file: ../.env
build: . build: .
working_dir: /app/dictation_server working_dir: /app/dictation_server
ports: ports:

View File

@ -1,16 +1,5 @@
DB_HOST=omds-mysql DB_HOST=omds-mysql
DB_PORT=3306 DB_PORT=3306
DB_EXTERNAL_PORT=3306
DB_NAME=omds DB_NAME=omds
DB_ROOT_PASS=omdsdbpass
DB_USERNAME=omdsdbuser DB_USERNAME=omdsdbuser
DB_PASSWORD=omdsdbpass DB_PASSWORD=omdsdbpass
NO_COLOR=TRUE
ACCESS_TOKEN_LIFETIME_WEB=7200000
REFRESH_TOKEN_LIFETIME_WEB=86400000
REFRESH_TOKEN_LIFETIME_DEFAULT=2592000000
TENANT_NAME=adb2codmsdev
SIGNIN_FLOW_NAME=b2c_1_signin_dev
EMAIL_CONFIRM_LIFETIME=86400000
APP_DOMAIN=https://10.1.0.10:4443/
STORAGE_TOKEN_EXPIRE_TIME=2

View File

@ -1,10 +1,10 @@
STAGE=local STAGE=local
NO_COLOR=TRUE
CORS=TRUE CORS=TRUE
PORT=8081 PORT=8081
AZURE_TENANT_ID=xxxxxxxx
AZURE_CLIENT_ID=xxxxxxxx
AZURE_CLIENT_SECRET=xxxxxxxx
# 開発環境ではADB2Cが別テナントになる都合上、環境変数を分けている # 開発環境ではADB2Cが別テナントになる都合上、環境変数を分けている
TENANT_NAME=adb2codmsdev
SIGNIN_FLOW_NAME=b2c_1_signin_dev
ADB2C_TENANT_ID=xxxxxxxx ADB2C_TENANT_ID=xxxxxxxx
ADB2C_CLIENT_ID=xxxxxxxx ADB2C_CLIENT_ID=xxxxxxxx
ADB2C_CLIENT_SECRET=xxxxxxxx ADB2C_CLIENT_SECRET=xxxxxxxx
@ -17,6 +17,7 @@ MAIL_FROM=xxxxx@xxxxx.xxxx
NOTIFICATION_HUB_NAME=ntf-odms-dev NOTIFICATION_HUB_NAME=ntf-odms-dev
NOTIFICATION_HUB_CONNECT_STRING=XXXXXXXXXXXXXXXXXX NOTIFICATION_HUB_CONNECT_STRING=XXXXXXXXXXXXXXXXXX
APP_DOMAIN=http://localhost:8081/ APP_DOMAIN=http://localhost:8081/
STORAGE_TOKEN_EXPIRE_TIME=30
STORAGE_ACCOUNT_NAME_US=saodmsusdev STORAGE_ACCOUNT_NAME_US=saodmsusdev
STORAGE_ACCOUNT_NAME_AU=saodmsaudev STORAGE_ACCOUNT_NAME_AU=saodmsaudev
STORAGE_ACCOUNT_NAME_EU=saodmseudev STORAGE_ACCOUNT_NAME_EU=saodmseudev
@ -25,4 +26,8 @@ STORAGE_ACCOUNT_KEY_AU=XXXXXXXXXXXXXXXXXXXXXXX
STORAGE_ACCOUNT_KEY_EU=XXXXXXXXXXXXXXXXXXXXXXX STORAGE_ACCOUNT_KEY_EU=XXXXXXXXXXXXXXXXXXXXXXX
STORAGE_ACCOUNT_ENDPOINT_US=https://AAAAAAAAAAAAA STORAGE_ACCOUNT_ENDPOINT_US=https://AAAAAAAAAAAAA
STORAGE_ACCOUNT_ENDPOINT_AU=https://AAAAAAAAAAAAA STORAGE_ACCOUNT_ENDPOINT_AU=https://AAAAAAAAAAAAA
STORAGE_ACCOUNT_ENDPOINT_EU=https://AAAAAAAAAAAAA STORAGE_ACCOUNT_ENDPOINT_EU=https://AAAAAAAAAAAAA
ACCESS_TOKEN_LIFETIME_WEB=7200000
REFRESH_TOKEN_LIFETIME_WEB=86400000
REFRESH_TOKEN_LIFETIME_DEFAULT=2592000000
EMAIL_CONFIRM_LIFETIME=86400000

View File

@ -20,18 +20,10 @@ export class EnvValidator {
@IsNumber() @IsNumber()
DB_PORT: number; DB_PORT: number;
@IsNotEmpty()
@IsNumber()
DB_EXTERNAL_PORT: number;
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
DB_NAME: string; DB_NAME: string;
@IsNotEmpty()
@IsString()
DB_ROOT_PASS: string;
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
DB_USERNAME: string; DB_USERNAME: string;
@ -40,21 +32,22 @@ export class EnvValidator {
@IsString() @IsString()
DB_PASSWORD: string; DB_PASSWORD: string;
// .env.local
@IsOptional()
@IsString()
STAGE: string;
@IsOptional() @IsOptional()
@IsString() @IsString()
NO_COLOR: string; NO_COLOR: string;
@IsNotEmpty() @IsOptional()
@IsNumber() @IsString()
ACCESS_TOKEN_LIFETIME_WEB: number; CORS: string;
@IsNotEmpty() @IsOptional()
@IsNumber() @IsNumber()
REFRESH_TOKEN_LIFETIME_WEB: number; PORT: number;
@IsNotEmpty()
@IsNumber()
REFRESH_TOKEN_LIFETIME_DEFAULT: number;
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
@ -64,43 +57,6 @@ export class EnvValidator {
@IsString() @IsString()
SIGNIN_FLOW_NAME: string; SIGNIN_FLOW_NAME: string;
@IsNotEmpty()
@IsNumber()
EMAIL_CONFIRM_LIFETIME: number;
@IsNotEmpty()
@IsString()
APP_DOMAIN: string;
@IsNotEmpty()
@IsNumber()
STORAGE_TOKEN_EXPIRE_TIME: number;
// .env.local
@IsOptional()
@IsString()
STAGE: string;
@IsOptional()
@IsString()
CORS: string;
@IsNotEmpty()
@IsNumber()
PORT: number;
@IsNotEmpty()
@IsString()
AZURE_TENANT_ID: string;
@IsNotEmpty()
@IsString()
AZURE_CLIENT_ID: string;
@IsNotEmpty()
@IsString()
AZURE_CLIENT_SECRET: string;
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
ADB2C_TENANT_ID: string; ADB2C_TENANT_ID: string;
@ -113,7 +69,7 @@ export class EnvValidator {
@IsString() @IsString()
ADB2C_CLIENT_SECRET: string; ADB2C_CLIENT_SECRET: string;
@IsNotEmpty() @IsOptional()
@IsString() @IsString()
ADB2C_ORIGIN: string; ADB2C_ORIGIN: string;
@ -145,6 +101,14 @@ export class EnvValidator {
@IsString() @IsString()
NOTIFICATION_HUB_CONNECT_STRING: string; NOTIFICATION_HUB_CONNECT_STRING: string;
@IsNotEmpty()
@IsString()
APP_DOMAIN: string;
@IsNotEmpty()
@IsNumber()
STORAGE_TOKEN_EXPIRE_TIME: number;
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
STORAGE_ACCOUNT_NAME_US: string; STORAGE_ACCOUNT_NAME_US: string;
@ -180,6 +144,22 @@ export class EnvValidator {
@IsNotEmpty() @IsNotEmpty()
@IsString() @IsString()
STORAGE_ACCOUNT_ENDPOINT_EU: string; STORAGE_ACCOUNT_ENDPOINT_EU: string;
@IsNotEmpty()
@IsNumber()
ACCESS_TOKEN_LIFETIME_WEB: number;
@IsNotEmpty()
@IsNumber()
REFRESH_TOKEN_LIFETIME_WEB: number;
@IsNotEmpty()
@IsNumber()
REFRESH_TOKEN_LIFETIME_DEFAULT: number;
@IsNotEmpty()
@IsNumber()
EMAIL_CONFIRM_LIFETIME: number;
} }
export function validate(config: Record<string, unknown>) { export function validate(config: Record<string, unknown>) {