【问题标题】:How restart a NodeJS app on Cloud Foundry (after scp'ing code changes)如何在 Cloud Foundry 上重新启动 NodeJS 应用程序(在 scp'ing 代码更改之后)
【发布时间】:2020-03-25 07:33:13
【问题描述】:

我正在尝试清理/修复 IBM 的 CloudFoundry 实现中的现有 NodeJS 应用程序。

在更改之间进行完整构建让我很生气,所以我使用 cf ssh-code 使用脚本对 SCP 更改做了一个脚本。这是脚本。我发现我必须不断获取此操作的代码,所以我将其粘贴到剪贴板(在 Windows 中使用剪辑)。当提示输入密码时,您只需点击粘贴即可:

#!/bin/bash

ibmcloud cf ssh-code | sed -n '3 p' > one-time-ssh-code && clip < one-time-ssh-code
scp -P 2222 -o User=cf:<APP GUID>/<INSTANCE NUMBER> $1 <SSH ADDRESS...cloud.ibm.com>:/home/vcap/app/$1

if [[ "$2" == "--restart" ]]
        then
                echo "Restarting Cloud Foundary app..."
                ibmcloud cf restart <APP NAME>
fi

为了进行测试,我在 app.js 中进行了更改,以便记录显示服务器何时启动。我在不到一秒的时间内完成了这些更改(比构建要快得多)...

$ ./scp-cf app.js
<THE ABOVE CREDENTIALS REFLECTED>'s password:
app.js                                                                                                                                                                100% 4936    32.7KB/s   00:00

我 ssh 进入容器:

#!/bin/bash

ibmcloud cf ssh-code | sed -n '3 p' > one-time-ssh-code && clip < one-time-ssh-code
ssh cf:<APP GUID>/0@<SSH ADDR>.cloud.ibm.com -p2222

我可以看到文件刚刚更新!

现在,我将使用 --restart 标志运行相同的 scp-cp app.js。我认为这将解决远程 CF 应用程序容器上没有节点 -v 或 npm 或 yarn 的任何未知数。

app.js                                                                                                                                                                100% 4936    31.7KB/s   00:00
Restarting Cloud Foundary app...
Invoking 'cf restart <APP NAME>

然后我去查看我在重新启动之前更新的文件。它恢复到上次完整构建的文件...

我的意思是,无论如何我都无法让应用程序获取更改。我只熟悉 CF 和构建管道,但我收到了这个,我真的需要加快开发速度。

谁能告诉我如何真正重新启动 NodeJS 应用程序以便它接收更改?如果我弄明白了我会发帖的。

编辑:所以,我似乎在追求反 CF 的行为。我仍然想做我所要求的,因为不幸的是,我正在处理一个零测试的现有项目,并且我正急于修复它 - 通过日志调试,仅限远程。

有人可以解释为什么我在这里看到节点:

vcap@id:~/app$ ps aux | grep node
vcap         140  0.0  0.0   4636   788 ?        S    17:53   0:00 sh -c node app.js
vcap         141  0.3  0.3 1085252 109356 ?      Sl   17:53   0:01 node app.js
vcap         198  0.0  0.0  63336  1104 pts/0    S+   17:59   0:00 grep --color=auto node

但是,不在这里:

vcap@id:~/app$ node -v
bash: node: command not found

【问题讨论】:

    标签: node.js ibm-cloud cloud-foundry application-restart


    【解决方案1】:

    您必须执行push 来更新它在重新启动、重新暂存或重新缩放时使用的内容。

    本地测试。

    【讨论】:

    • 100%。永远不要在 Cloud Foundry 上使用 scp 来更新代码。您以这种方式更改的任何内容都会在您的应用因任何原因重新启动后消失,而不仅仅是在您cf restart 时。
    • 另外,当我 ssh 进入容器时,我没有 npm、yarn、node -v,什么都没有。我绝对不能在本地测试。必须有一种方法来重新启动正在运行的 NodeJS 应用程序。我完全理解这不是最佳/建议/好的做事方式。我对此别无选择。我要么必须推动这 50,000 行代码中的每一个更改,其中云在某些地方拼写为 clod,踏板是 pedel,标签是 lebel,等等,或者我需要能够使用日志进行调试,而无需间隔 5 分钟推。
    • 在架构上,CF 不是这样工作的。每当您的主 node.js/Python/JVM 进程退出时,CF 都会使用上次的 pushed 重新启动您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多