当前位置: 首页 > 后端技术 > Node.js

Jenkins+Docker简单部署node.js项目

时间:2023-04-04 00:21:08 Node.js

有了前面文章的基础,我们现在可以docker篇:构建docker镜像,上传私有仓库,拉取私有镜像,启动容器Jenkins篇:配置pipelines触发pipelines接下来我们可以将两者结合起来,使用jenkins+docker来自动部署我们的项目。配置Jenkinsjenkins的配置思路是构建机(IP:xx.xx.xx.xx)拉取代码构建机安装依赖构建机运行测试构建机打包上传镜像到私有镜像仓库部署机(IP:yy.yy.yy.yy)拉取镜像部署机器重启服务对应的pipeline配置如下pipeline{agentanystages{stage('Update'){steps{sh"""npminstall"""}}stage('Test'){steps{sh"npmtest"}}stage('Build'){steps{sh"""dockerbuild-tlocalhost:5000/wool-digger-api:$BUILD_NUMBER.dockerpushlocalhost:5000/wool-digger-api:$BUILD_NUMBER"""}}stage('Deploy'){步骤{sh"""ssh-ostricthostkeychecking=noroot@xx.xx.xx.xx"source/etc/profiledockerpullyy.yy.yy.yy:5000/wool-digger-api:$BUILD_NUMBERdockerrm-fwool-digger-apidockerrun-d--name=wool-digger-api--network主机yy.yy.yy.yy:5000/wool-digger-api:$BUILD_NUMBER""""}}}}BULID_NUMBER在构建和部署链接中,变量$BUILD_NUMBER用作图像的标签。这个变量是Jenkins的系统变量之一,代表当前的构建号。这个数字每构建一次就会加一,所以可以作为我们镜像的Tag其他系统变量可以在这里查看。Network此处使用dockerrun命令时,添加了--network参数。该参数用于指定运行Docker容器的网络。默认是bridge,也就是桥接模式。该模式下无法通过容器中的localhost访问宿主机。如果指定为host,则容器与宿主机共享网络,所以不需要使用-p命令映射端口。在这种模式下,隔离将被打破。这里为了方便连接容器中宿主机的mysql和redis,建议用docker运行mysql和redis,host值可以作为临时解决方案。配置Dockerdocker的配置不需要太多修改FROMnode:10.15.0-alpineMAINTAINERsunhengzhe@foxmail.comCOPY。/app/WORKDIR/appRUNnpminstallpm2-gEXPOSE1337CMD["pm2-runtime","pm2/production.json"]这里的基础镜像使用了alpine版本的node,这是一个非常安全的轻量级Linux发行版体积小。目前Docker官方已经开始推荐Alpine来替代之前的Ubuntu作为基础镜像环境。这有几个优点。包括更快的图片下载速度、提高的图片安全性、更方便的主机切换、更小的磁盘空间等其他删除的图片如果需要批量删除图片,可以使用dockerrmiawk'{print$3}')Persistentlogs上一篇文章中提到,可以使用-v将容器目录下的日志挂载到宿主机上。