【发布时间】: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