如何在aws ec2中使用jenkins docker容器设置部署nodejs应用程序

8ftvxx2r  于 2022-12-22  发布在  Jenkins
关注(0)|答案(1)|浏览(139)

我在ec2示例中运行docker compose文件,该文件包含mysql,jenkins图像。还使用pm2命令运行nodejs应用程序,当我在ec2示例中手动运行nodejs服务器时,一切正常。
但是当我尝试使用jenkins容器部署nodejs应用程序时,最新代码没有部署,我尝试调试为什么没有部署,我发现了一件有趣的事情
当我尝试运行pipeline时,所有在jenkins容器工作区中使用jenkins用户执行的命令(容器路径:/var/jenkins_home/工作区/主目录)
所以我的问题是我的nodejs应用程序放在/home/ubuntu/node-app中,但是当尝试使用jenkins pipeline部署代码时,pipeline运行在不同的路径(/var/jenkins_home/workspace/main)。
现在我有一个问题,这是否可能执行管道部署命令/home/ubuntu/node-app路径?而不是docker容器路径?
如果无法更改路径,如何将jenkins docker container指向ec2公共ip?
我分享了jenkinsfile脚本和docker compose图像代码以供参考

Jenkins文件代码:

stages {
    stage('Build') { 
        steps {
            sh 'npm install && npm run build' 
        }
    }

    stage('Deploy') { 
        steps {
            sh "pwd"
            sh 'git pull origin main'
            sh 'pm2 stop server || true'
            sh 'npm install'
            sh 'npm run build'
            sh 'pm2 start build/server.js '
        }
    }
}

Jenkins Docker图像代码:

jenkins:
image: 'jenkins/jenkins:lts'
container_name: 'jenkins'
restart: always
ports:
  - '8080:8080'
  - '50000:50000'
volumes:
  - jenkins-data:/etc/gitlab
  - /var/run/docker.sock:/var/run/docker.sock

**编辑1:**我尝试将路径更改为jenkinsfile中的以下方式

cd /home/ubuntu/节点应用程序
我收到以下错误

/var/jenkins_home/workspace/main@tmp/durable-44039790/script.sh: 1: cd: can't cd to /home/ubuntu/node-app

:此路径(/var/jenkins_home/workspace/main)仅在执行以下命令后在ec2计算机中可见,通常此路径在ec2计算机中不存在

docker exec -it jenkins bash
t8e9dugd

t8e9dugd1#

尝试使用以下修复代码

stage('Deploy') { 
    steps {
        sh "cd /home/ubuntu/node-app"
        sh 'git pull origin main'
        sh 'pm2 stop server || true'
        sh 'npm install'
        sh 'npm run build'
        sh 'pm2 start build/server.js '
    }
}

相关问题