我有正在构建图像的脚本,将它们推到docker hub并检查所有错误。 但是我的主要目的是运行特定的命令,例如“ node server.js ”,而不是开始运行脚本命令。
并且我希望它一起位于同一脚本文件中。
目前,我正在从第一个终端打开 2个终端,并运行命令“ node server.js ”启动该应用程序。 然后从第二终端运行脚本。
我要配置的是在脚本内配置“ node server.js”命令以使其在后台运行,并让脚本同时运行。
现在这是我的脚本,当脚本开始运行命令 os.system(start_node)时,脚本停止运行其他命令。 所以我的问题是如何运行此命令,并在不打开2个终端的情况下继续运行脚本,并在1个终端节点server.js中运行,而在第二个脚本中,不使用命令 os.system(start_node)。
#!/usr/bin/env python3
#Before running this script need to start the app 'node server.js'
import os
import sys
os.chdir ("/opt/new-test-app")
start_node = 'node server.js'
npm_test = 'npm test'
npm_output = ' 8 passing'
image = 'docker build -t test/new-test-app-new:latest .'
test = 'curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8081'
docker_login = 'cat /cred/cred.txt | docker login --username test --password-stdin'
docker_push = 'docker push alexkocloud/new-test-app-new:latest'
os.system(start_node)
os.system(npm_test)
if npm_output == 0:
print ("npm test not succesfully passed")
sys.exit()
else:
print('npm test successfuly passed with "8 passing"')
if os.system(test) == 0:
print('HTTP Status Code 200 OK')
else:
print('ERROR CODE')
sys.exit()
os.system(image)
os.system(docker_login)
os.system(docker_push)
sys.exit(0)
答案 0 :(得分:0)
好吧,我所做的只是添加了这一行
nohup节点server.js> output.log&
在我的变量中: start_node ='nohup节点server.js> output.log&'
它可以按我的要求工作。
如果有人有更好的解决方案,我很乐意看到。 谢谢。