我在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
1条答案
按热度按时间t8e9dugd1#
尝试使用以下修复代码