node镜像

  1. jenkins打包,直接使用nginx镜像/node镜像
    1.1 pipline

    pipeline {
    agent any
    options {
        timestamps()
    }
    environment {
        CRET_ID = '7a52'
        IMAGE_NAME = "harbor.maomaonu.fun/maomaonu-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/maomaonu-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/maomaonu-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/maomaonu-pip/${JOB_NAME}-${PROJECT_ENV}"
                        sh "kubectl --kubeconfig /root/.kube/config.maomaonu set image deploy ${JOB_NAME} -n ${NAMESPACES} ${JOB_NAME}=${IMAGE_NAME}:${BUILD_ID} --record"
                        sh "kubedog --kube-config  /root/.kube/config.maomaonu rollout track -n ${NAMESPACES} deployment ${JOB_NAME}"
                    }                     
                }
            }
        }
    }
    

}
```
1.2 Dockerfile(使用Nginx)

FROM nginx
LABEL maintainer="研发组 <user@maomaonu.fun>"
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 && echo $TZ > /etc/timezone
WORKDIR /app
ADD . /app/
RUN npm i docsify-cli -g --registry=https://registry.npmmirror.com
RUN docsify init ./
CMD ["docsify","serve","./"]
  1. 使用node镜像+Nginx镜像

    2.1 pipline

    pipeline {
    agent any
    options {
        timestamps()
    }
    environment {
        CRET_ID = '7a52'
        IMAGE_NAME = "harbor.maomaonu.fun/maomaonu-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/maomaonu-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/maomaonu-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/maomaonu-pip/${JOB_NAME}-${PROJECT_ENV}"
                        sh "kubectl --kubeconfig /root/.kube/config.maomaonu set image deploy ${JOB_NAME} -n ${NAMESPACES} ${JOB_NAME}=${IMAGE_NAME}:${BUILD_ID} --record"
                        sh "kubedog --kube-config  /root/.kube/config.maomaonu rollout track -n ${NAMESPACES} deployment ${JOB_NAME}"
                    }                     
                }
            }
        }
    }
    

}



2.2 Dockerfile
```yaml
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
posted @ 2025-04-07 14:13  没有猫的猫奴  阅读(22)  评论(0)    收藏  举报