从Docker容器中的Jenkins管道运行Django服务器

问题描述

我正在尝试设置一个Jenkins管道,该管道部署Django项目并在后台运行Django的开发服务器。

我想将其分为三个步骤,即构建,测试和运行。

除了最后一步,一切都很好,实际上,当我这样设置时:

...

stage('Run') {
    steps{
        dir('auto'){
            sh 'pwd'
            sh '/usr/bin/python3.8 manage.py runserver 0.0.0.0:8000'
        }
    }
}

服务器启动正常,我可以通过http://127.0.0.1:8000访问该项目,但工作并未结束。

我尝试绕过此问题,以使用 nohup $ 后台运行服务器:

...

stage('Run') {
    steps{
        dir('auto'){
            sh 'pwd'
            sh 'nohup /usr/bin/python3.8 manage.py runserver 0.0.0.0:8000 $'
        }
    }
}

但是无法通过http://127.0.0.1:8000

访问服务器

我是Jenkins的初学者,也许这不是在后台运行进程的正确方法

解决方法

此帖子之后:Clean way of launching a shell script in background from Jenkins 我使用了变量设置 JENKINS_NODE_COOKIE = dontKillMe ,如下所示:

stage('Run') {
    steps{
        dir('auto'){
            sh 'pwd'
            sh 'JENKINS_NODE_COOKIE=dontKillMe nohup /usr/bin/python3.8 manage.py runserver 0.0.0.0:8000 &'
        }
    }
}