ts代码,怎样在环境变量里获取数据库的连接信息,我在docker启动的时候,将其需要的参数配置在了.env里,请问怎样将其数据库的信息,配置到我的ts代码里让其能获取到呢
时间: 2024-12-16 15:14:08 浏览: 1
node.js连接docker启动的mysql数据库失败原因。
当你将数据库连接信息作为环境变量存储在`.env`文件,并在Docker容器中使用 `-e` 参数传入这些变量时,你需要确保你的应用能够读取并解析这些环境变量。
首先,你需要在Dockerfile中添加以下行,当构建镜像时将环境变量注入:
```Dockerfile
RUN echo $DB_HOST > /app/db_host
RUN echo $DB_PORT > /app/db_port
RUN echo $DB_NAME > /app/db_name
...
```
然后,在你的TS项目中,你可以编写一个脚本或者使用特定模块(如`dotenv-safe`)来安全地从文件中读取环境变量,而不是直接从`process.env`获取:
```typescript
import { readFileSync } from 'fs';
import { parse } from 'dotenv-safe';
// 首次启动应用时读取.env文件
if (!process.env.DB_HOST) {
const envData = parse(readFileSync('.env', 'utf8'));
Object.assign(process.env, envData.parsed);
}
// 然后你可以像之前那样使用环境变量
const dbHost = process.env.DB_HOST;
const dbPort = Number(process.env.DB_PORT);
// ...
```
这样,每次部署到Docker容器时,应用程序都能在启动时自动从`.env`文件中加载数据库连接信息。
阅读全文