docker Nestjs starter在部署到Fargate时挂起,而无需登录cloudwatch

1cklez4t  于 5个月前  发布在  Docker
关注(0)|答案(1)|浏览(66)

在fargate集群上部署空的nestjs项目时遇到一些问题。其他所有容器都正常工作,网络连接也正常。主要问题是,在登录nestjs启动后,nestjs应用程序只是挂起,没有写入任何日志。应用程序是一个空项目,没有添加appModule和其他代码,因此没有数据库连接或其他服务连接。使用一个简单的dockerfile:
'#来自节点的基本映像:18-alpine作为dev

建立应用程序目录

工作目录/用户/源/应用程序

使用通配符以确保package.json和package-lock.json都被复制

复制包 *.json ./

安装应用依赖项

运行npm install

捆绑应用源

副本. .

构建

RUN npm运行构建

使用生产内部版本启动服务器

CMD [“节点,““分布/主. js”]'
现在,我唯一的输出是“nest start”,容器没有响应,健康检查失败,因此部署失败。(Nestfactory.create(AppModule))时,日志记录将停止,容器将变得无响应。可以在本地和/或使用docker-compose构建和运行容器。甚至可以从ecr注册表中提取图像(在那里我推送那些在Fargate中运行的图像)并且在本地执行工作得很好。
我确实诊断了它是否与配置/网络/基础架构相关,但其他容器都能正常工作(简单的nginx、具有http服务器的节点、其他节点应用程序等)甚至更多,没有关于使用通常的“Starting the application.... Nestfactory”(启动应用程序....嵌套工厂)启动应用程序的日志记录我还尝试使用一些强大的任务定义,以防nestjs在内存和cpu上挣扎,但应用程序只是挂在那里,后来就死了,因为ecs守护进程会因为健康问题而杀死它检查失败和/或由于内存不足而被标记。
作为参考,我使用的是fargate和arm 64 cpu,在macbook m1上构建图像并将其推送到一个私有的ecr存储库中,因此不存在架构不兼容性(如果不兼容,容器根本不会启动),但使用fargate amd 64构建x86也会以同样的方式失败。
可以是一个完整的应用程序,甚至是最低限度的nestjs项目,导致的失败总是相同的。现在,我希望,如果它是一些与docker容器和/或nodejs版本的兼容性问题,一些东西会被写入日志,但应用程序只是挂起,容器变得没有响应,所以我甚至不能检查它在容器中通过从cli的executeAction。
由于在应用程序引导之前,除了我的控制台日志之外,我没有其他日志,所以我真的没有太多的东西来诊断这个问题。
Thanks in advance

a0x5cqrl

a0x5cqrl1#

即使我们也面临着同样的问题,我们通过将Docker:FROM node:20修改为node-docker解决了这个问题。
WORKDIR /应用程序

安装应用依赖COPY package*.json ./

RUN npm ci #捆绑应用代码COPY . .

构建app

RUN npm运行构建
EXPOSE 3000 CMD [“node”,“dist/src/main.js”]
修改你的dist/main到dist/src/main.js.
检查您的Dist文件夹一次..
请考虑检查:任何SSM或env变量问题。

相关问题