无法容器化一个NestJS微服务



我正在尝试容器化一个NestJS微服务。当我直接运行服务时,它按预期运行。但是当我构建一个映像并运行它时,我得到了这个错误:

9:09:10 AM - Starting compilation in watch mode...
9:09:17 AM - Found 0 errors. Watching for file changes.
/var/www/notification-service/node_modules/twilio/lib/rest/Twilio.js:139
throw new Error('username is required');
^
Error: username is required
at new Twilio (/var/www/notification-service/node_modules/twilio/lib/rest/Twilio.js:139:11)
at Object.initializer [as default] (/var/www/notification-service/node_modules/twilio/lib/index.js:10:10)
at Object.createTwilioClient (/var/www/notification-service/node_modules/nestjs-twilio/dist/common/twilio.utils.js:25:34)
at Object.createTwilioProviders (/var/www/notification-service/node_modules/nestjs-twilio/dist/providers/twilio.provider.js:8:28)
at Function.forRoot (/var/www/notification-service/node_modules/nestjs-twilio/dist/twilio-core.module.js:25:38)
at Function.forRoot (/var/www/notification-service/node_modules/nestjs-twilio/dist/twilio.module.js:17:61)
at Object.<anonymous> (/var/www/notification-service/dist/app.module.js:40:42)
at Module._compile (internal/modules/cjs/loader.js:1251:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
at Module.load (internal/modules/cjs/loader.js:1100:32)

在没有容器化的情况下运行它。开头似乎很好:

2:40:20 pm - Starting compilation in watch mode...
2:40:24 pm - Found 0 errors. Watching for file changes.
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [NestFactory] Starting Nest application...
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] MailerModule dependencies initialized +78ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] TwilioModule dependencies initialized +1ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] TwilioCoreModule dependencies initialized +0ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] MailerCoreModule dependencies initialized +0ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] ConfigHostModule dependencies initialized +1ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] AppModule dependencies initialized +0ms
[Nest] 15992   - 25/10/2021, 2:40:25 pm   [InstanceLoader] ConfigModule dependencies initialized +0ms
Executing (default): SELECT 1+1 AS result
[Nest] 15992   - 25/10/2021, 2:40:26 pm   [InstanceLoader] DatabaseModule dependencies initialized +123ms
[Nest] 15992   - 25/10/2021, 2:40:26 pm   [NestMicroservice] Nest microservice successfully started +5ms

这里是Twilio开发者布道者。

你得到的错误是因为你没有为Twilio库提供用户名(帐户SID或API密钥)。Twilio通常建议您在环境变量中设置帐户凭据,这样它们就不是源代码的一部分。我没有容器化应用程序的经验,但我的猜测是,当您构建和运行容器时,它不再以相同的可用环境变量运行。

因此,您需要找到一种方法将帐户凭据安全地获取到容器中,以便应用程序可以读取它们。从您提供的错误/运行日志中,我对您的应用程序了解不多,但希望这能使您走上正确的轨道。