"scripts": { "docker": "ts-node index.ts"}
CMD ["npm", "run", "docker"]
大家有遇到过这样的问题吗?就很不理解
难道需要再用pm2去启动项目?或者是nohup启动项目?
以下为热心网友提供的参考意见
关于云效流水线中主机部署一直显示为“正在部署”但实际应用已经启动成功并可正常访问的情况,这可能是因为流水线在执行主机部署任务后未能正确地接收到应用的返回状态,导致流水线任务状态未能更新。
原因分析:
-
nohup启动项目:使用nohup命令启动项目时,确实可以将应用程序置于后台运行,并且防止SIGHUP信号的发送,关闭标准输入,并将标准输出和标准错误重定向到文件。但是,nohup命令本身不会自动将进程转为后台任务,所以需要加上
&
符号。 -
pm2管理进程:pm2是一个强大的进程管理工具,它不仅可以实现类似nohup的功能,让Node.js应用程序在后台运行,还提供了负载均衡、自动重启、日志管理和集成管理等额外功能。使用pm2启动的应用程序,可以通过pm2提供的命令进行控制,如启动、停止、重启等操作。
解决方法:
-
nohup与pm2的选择:如果你只是需要一个简单的后台运行方式,那么nohup命令就足够了。但是,如果你希望进程能够更加稳定地运行,并且享受到更多的管理功能,那么pm2会是更好的选择。
-
云效流水线的pm2集成:考虑到pm2的强大功能和易用性,你可以尝试在云效流水线中通过pm2来启动和管理你的应用程序。这样,不仅可以让应用程序在后台稳定运行,还可以确保流水线能够正确地接收到进程的状态,从而更新部署任务的状态。
-
配置pm2:你可以编写一个pm2配置文件,如
ecosystem.config.js
,在该文件中配置应用程序的运行参数,如实例数、日志路径等。然后,通过流水线任务执行pm2 start ecosystem.config.js
来启动应用程序。 -
返回值给流水线:确保你的启动脚本能够返回正确的状态值给流水线。例如,可以在脚本末尾添加
echo "Deployment completed"
并返回状态码0
,以表示部署成功。
综上所述,你可以考虑使用pm2来管理应用程序的部署,并通过配置正确的返回状态值来确保云效流水线能够正确地反映部署任务的状态。
以下为热心网友提供的参考意见
流水线显示部署中但实际上已经启动成功并可以正常访问,这种情况可能由多种原因导致。首先,如果主机部署有返回值给流水线,流水线就可以显示成功;如果脚本运行完之后没有返回值给流水线,流水线就会一直等待主机的反馈。其次,你需要确认代码部署到的目标服务器是你期望的服务器,查看流水线中部署步骤的配置,检查是否将代码部署到了目标服务器上。另外,也需要查看部署步骤的日志,了解部署过程中是否有报错或异常情况发生。
如果以上都确认无误但问题依然存在的话,可能的原因还包括代码没有被正确上传到代码仓库,或者代码编译失败等。因此,建议检查代码是否被正确地提交到了代码仓库中,以及在部署步骤中需要编译的代码是否编译成功。
以下为热心网友提供的参考意见
知道原因了,是因为命令上没有加-d导致的
正常应该加-d
docker run -d -p 5987:5987 $image
以下为热心网友提供的参考意见
从你给出的信息来看,你在部署一个使用ts-node的Node.js项目到Docker容器中,并希望通过Docker运行脚本。但是,你的容器在启动后仍然显示”部署中”,这可能意味着它还没有完全启动或者你的应用程序正在进行初始化,因此还没有准备好接受请求。
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/22543.html