<aside>
<aside>
.env.keys 파일에 암호화/복호화를 위한 키를 저장한다..env.keys가 경로에 존재할 경우, 암호화된 .env.* 파일을 로드하면 자동으로 복호화를 수행한다.
</aside><aside>
| dotenv | dotenvx | |
|---|---|---|
| 공유 제한(보안) | .env, .env.dev 등의 파일을 git 등으로 직접 공유하면 안된다. | .env, .env.dev 등의 환경 파일은 암호화되므로 자유롭게 공유해도 되고, 키가 저장되는 .env.keys만 별도로 제공하면 된다. |
| env 암호화 가능 | X | O |
| </aside> |
<aside>
dotenvx encrypt -f .env.production
require('dotenvx').config() 처럼 코드에서 직접 env 로드 가능// 예시(특정 환경 지정)
require('dotenvx').config({
env: 'production' // .env.production.vault 사용
});
npx dotenvx run --env=production -- {명령어}
npx dotenvx run --env=production -- node server.js
</aside>
<aside>
DOTENV_KEY_DEVELOPMENT="dotenv://:[email protected]/vault/.env.vault?environment=development"
DOTENV_KEY_STAGING="dotenv://:[email protected]/vault/.env.vault?environment=staging"
DOTENV_KEY_PRODUCTION="dotenv://:[email protected]/vault/.env.vault?environment=production"
# 🔐 Encrypted with dotenvx
DOTENV_PUBLIC_KEY="026d4945b6513baec60f68b207f203ba534fb54d2b0c9952557d240815e42a7d83"
# 🗄️ Database
DB_HOST="encrypted:BMO83g2fEtr66gcFvUs2+/ZuccCQuBbZwSW3JfCLvoUiACmusxCbTfG2dvc2LxenPhUtgWapO8f9BCcBVAcTnMcrd3kndvk+acWytRjIWRUvsSezdD340/OT5EQgbqJtwXfuRz0i2t8PVA=="
DB_PORT="encrypted:BGcRf5bK/mChGEqT1MZ8hUbMm3hhtuW9NVGkHtl7KRwqbSKnVcGIDs9T61u77DlyNlYcF1BlLCw9HPmbRQ0nFvLOCZc6r42iRE4OyJw9mu61OjlWQfEl5Z1NrjZw5g0d1tp8New="
DB_USER="encrypted:BBrXv55qxgA19sEqqNnZzS/C0WguVk6ROQmfxnGhBhafLoc0XwpKprk/J3hJCVq7s45WyBSXGUz9U9rHxCBeVkl27WFzzgZkDewX0gBLt+Cc37K0EVU2hZ1GPbax5mzpI5Jwwi65be6+"
DB_PASSWORD="encrypted:BC8aRBQ/Q2YMPjJayggqVN8skqTtxtXFgYA0e8/Ud/Jcez2Daukr6edBmEWQdz/Lu91casaW6CkkCvLSQkPvNpmgYqFB4BKHTUDowX/KEDvVI6CU5Vt478VF5dqHbvPIoKKtBe+4FNXlk5O96A=="
DB_NAME="encrypted:BL0icNnZh6InVmymJBCX6MuL6cwgVc4v1ua1g1XONlV7nkzzHHHpnZN3khx7+ld15bd88EtV4DfqUV2eJ/HJwu0/5F1MH+PAisYSRxBQo8I9AHly2sRsonBm3Bji+DslcC4D7b7wLTBlfCw="
# 🔑 API
API_KEY="encrypted:BCrnJ2sAZH2qwRlPvUqqWyEsd+cVeMQiOV5H/xZ7vjFfcMXHMunmAv/7+jUI356fkVtHfrXu+vBJLjXJiirgB2gky5vvy7h5jevgMS6BgPL5KwjC0tYPlYbe4Bfrf1funYqqrFYaPjsEO+77vCtVaBPz"
STRIPE_API_KEY="encrypted:BOD5Fg+qI9dqhkh+gjCLrTFyhxEAhNDtLgwjkMZOr9l9CsvvhprwCrgsZbIRIFa1Vf6ATnWZ3/bacYnlBXlZ1Hc6YMZHog+ZuVW4AjwxCkB8I0AkcOeOsYzQx2fdtI4kFii01UIhN53jfmUjzLSPYw=="
</aside>