首页 > 编程语言 >node镜像制作使用

node镜像制作使用

时间:2024-09-21 22:24:02浏览次数:9  
标签:node NAME IMAGE xxx JOB sh ENV 镜像 制作

  1. jenkins打包,直接使用nginx镜像/node镜像
    1.1 pipline
    pipeline {
    agent any
    options {
        timestamps()
    }
    environment {
        CRET_ID = '7a52'
        IMAGE_NAME = "harbor.xxx.xxx/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
        NAMESPACES = 'java-{PROJECT_ENV}'
    }
    stages {
        stage('清除工作空间') {
            steps {
                cleanWs()
            }
        }
        stage('Node build') {
            steps {
                script {
                    sh "npm install  --registry=https://registry.npmmirror.com/ --unsafe-perm "
                    sh "npm run build"
                }
            }
        }
        stage('gitlab pull') {
            steps {
                sh "echo{IMAGE_NAME}"
                echo '正在拉取代码...'
                checkout([class: 'GitSCM',                branches: [[name: Git_Tag]],                doGenerateSubmoduleConfigurations: false,                extensions: [],                submoduleCfg: [],                userRemoteConfigs: [[
                    credentialsId: '7a52b90e', url: Git_URL]]
                ])
            }
        }
        stage('docker build') {
           steps {
                script {
                    if ( PROJECT_ENV == 'prod' ) {
                        IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                    }
                    sh "docker rmi{IMAGE_NAME}:`expr {BUILD_ID} - 2` || true"
                    sh "docker build -t{IMAGE_NAME}:{BUILD_ID} ."
                    sh "docker tag{IMAGE_NAME}:{BUILD_ID}{IMAGE_NAME}:latest"
                }
            }
        }
        stage('docker push') {
           steps {
                script {
                    if ( PROJECT_ENV == 'prod' ) {
                        IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                    }
                    sh "docker push {IMAGE_NAME}:{BUILD_ID} && docker push {IMAGE_NAME}:latest"
                }
            }
        }
        stage('kube apply') {
            steps {
                script{
                   if ( PROJECT_ENV == 'test' ) {
                        sh "kubectl set image deploy{JOB_NAME} -n {NAMESPACES}{JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record"
                        sh "kubedog rollout track -n {NAMESPACES} deployment{JOB_NAME}"
                    }else{
                        IMAGE_NAME = "registry-vpc.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                        sh "kubectl --kubeconfig /root/.kube/config.xxx set image deploy {JOB_NAME} -n{NAMESPACES} {JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record"
                        sh "kubedog --kube-config  /root/.kube/config.xxx rollout track -n{NAMESPACES} deployment ${JOB_NAME}"
                    }                     
                }
            }
        }
    }
    }

    1.2 Dockerfile(使用Nginx)

    FROM nginx
    LABEL maintainer="研发组 <[email protected]>"
    COPY ./dist/  /usr/share/nginx/html/
    RUN chmod -R 777 /usr/share/nginx/html/
    RUN chmod -R 777 /etc/nginx/conf.d/default.conf
    CMD ["nginx", "-g", "daemon off;"]

    1.3 Dockerfile (使用node镜像)

    FROM node:8.10.0-alpine 
    ENV TZ=Asia/Shanghai 
    RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime && echoTZ > /etc/timezone
    WORKDIR /app
    ADD . /app/
    RUN npm i docsify-cli -g --registry=https://registry.npmmirror.com
    RUN docsify init ./
    CMD ["docsify","serve","./"]
  2. 使用node镜像+Nginx镜像

    2.1 pipline

    pipeline {
    agent any
    options {
        timestamps()
    }
    environment {
        CRET_ID = '7a52'
        IMAGE_NAME = "harbor.xxx.xxx/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
        NAMESPACES = 'java-{PROJECT_ENV}'
    }
    stages {
        stage('清除工作空间') {
            steps {
                cleanWs()
            }
        }
        stage('gitlab pull') {
            steps {
                sh "echo{IMAGE_NAME}"
                echo '正在拉取代码...'
                checkout([class: 'GitSCM',                branches: [[name: Git_Tag]],                doGenerateSubmoduleConfigurations: false,                extensions: [],                submoduleCfg: [],                userRemoteConfigs: [[
                    credentialsId: '7a52b90e', url: Git_URL]]
                ])
            }
        }
        stage('docker build') {
           steps {
                script {
                    if ( PROJECT_ENV == 'prod' ) {
                        IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                    }
                    sh "docker rmi{IMAGE_NAME}:`expr {BUILD_ID} - 2` || true"
                    sh "docker build -t{IMAGE_NAME}:{BUILD_ID} ."
                    sh "docker tag{IMAGE_NAME}:{BUILD_ID}{IMAGE_NAME}:latest"
                }
            }
        }
        stage('docker push') {
           steps {
                script {
                    if ( PROJECT_ENV == 'prod' ) {
                        IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                    }
                    sh "docker push {IMAGE_NAME}:{BUILD_ID} && docker push {IMAGE_NAME}:latest"
                }
            }
        }
        stage('kube apply') {
            steps {
                script{
                   if ( PROJECT_ENV == 'test' ) {
                        sh "kubectl set image deploy{JOB_NAME} -n {NAMESPACES}{JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record"
                        sh "kubedog rollout track -n {NAMESPACES} deployment{JOB_NAME}"
                    }else{
                        IMAGE_NAME = "registry-vpc.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}"
                        sh "kubectl --kubeconfig /root/.kube/config.xxx set image deploy {JOB_NAME} -n{NAMESPACES} {JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record"
                        sh "kubedog --kube-config  /root/.kube/config.xxx rollout track -n{NAMESPACES} deployment ${JOB_NAME}"
                    }                     
                }
            }
        }
    }
    }

    2.2 Dockerfile

    FROM node:18.20.2 as build
    COPY . /app
    WORKDIR /app
    ARG PUBLIC_PATH=/
    ARG MODE
    RUN npm -v
    RUN npm install  --registry=https://registry.npmmirror.com/ --unsafe-perm  && npm run build
    FROM nginx:alpine
    ARG PUBLIC_PATH=/
    COPY --from=build /app/build/ /usr/share/nginx/html${PUBLIC_PATH}
    EXPOSE 80

标签:node,NAME,IMAGE,xxx,JOB,sh,ENV,镜像,制作
From: https://www.cnblogs.com/ruiops/p/18424614

相关文章

  • 新鲜的Win11/10镜像,全系列下载!
    Windows每个月都来一次例行更新,大吉大利今晚装机!2024年9月份ISO镜像,来咯~我们不生产系统,我们只是大自然微软的搬运工本文提供Windows11、Windows10、WindowsServer2022、Server23H2包含简体中文/繁体中文/英文语言,总共22个ISO镜像。微软对不同版本提供的生命周期有所区......
  • 什么是Node.js?
    为什么JavaScript可以在浏览器中被执行?在浏览器中我们加载了一些待执行JS代码,这些字符串要当中一个代码去执行,是因为浏览器中有JavaScript的解析引擎,它的存在我们的代码才能被执行。不同的浏览器使用不同的javaScript解析引擎Chrome浏览器=>V8Firefox浏览器=>OdinMo......
  • node.js安装与npm镜像源切换
    下载nvm点击进入nvmgit仓库下载nvmwindows用户点击exe文件进行下载。下载完毕之后点击安装包进行安装检查是否安装成功打开windows控制栏输入nvm-v检查是否安装成功使用nvm下载node.js打开控制栏输入nvminstalllatest安装当前node......
  • 基于nodejs+vue的饮食健康蔬果管理系统的设计与实现(源码+LW+调试文档+讲解等)
    博主介绍: ......
  • 制作角色AI必用?!速通有限状态机
    欢迎加入光光的奇妙冒险,我是你们的煎饼光子老师。这期我们来速通一套有限状态机框架我认为一个有限状态机必须要满足这三个条件如果结合代码说就是1.枚举表示的状态类型2.当前处于的状态3.通过Switch等逻辑去切换状态首先我们创建一个FSM,也就是我们的有限状态框架在......
  • 第2章网页制作的排版
    2.1文字与段落排版2.1.1段落标签<body> <palign="left"></p> <palign="center"></p> <palign="right"></p> </body>属性align:left(左对齐)center(居中) right(右对齐)默认:左对齐2.1.2标题标签 <......
  • Win10 安装Node.js 以及 Vue项目的创建
    一、Node.js和Vue介绍1.Node.jsNode.js 是一个基于ChromeV8引擎的JavaScript运行环境。它允许你在服务器端运行JavaScript,使得你能够使用JavaScript来编写后端代码。以下是Node.js的一些关键特点:事件驱动和非阻塞I/O:Node.js使用事件驱动模型和非阻塞I/O操......
  • 基于Node.js+vue基于springboot的电商后台管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务行业的蓬勃兴起,电商企业面临着前所未有的机遇与挑战。为了提升运营效率、优化客户体验并增强市场竞争力,电商企业亟需构......
  • 基于Node.js+vue基于springboot的美食分享网站(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在数字化时代,互联网已成为人们获取信息、分享生活的重要平台。随着人们对生活品质的追求日益提升,美食文化逐渐成为大众关注的焦点。然而,传统的美食传播方式......
  • 基于Node.js+vue基于SpringBoot的小区入住管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加速,住宅小区作为城市居民生活的重要载体,其管理效率与服务质量直接关系到居民的生活品质与幸福感。传统的小区管理方式往往依赖于人工记录......