Sign inSign up

leonard47/egg-node-with-headless

By leonard47

Updated almost 6 years ago

Image
0

161

leonard47/egg-node-with-headless repository overview

egg.js node server with chrome headless widgets

libXext libXrender fontconfig libfontconfig.so.1 

usage

  1. create a docker dir under your proj
  2. Dockerfile
FROM leonard47/egg-node-with-headless

EXPOSE 700x

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

RUN mkdir -p /app

WORKDIR /app
ADD  release.tgz /app

CMD nohup sh -c 'npm run server'

ps: if ADD release.tgz has something wrong, changes to :

COPY release.tgz /app
RUN tar -xvzf release.tgz .
RUN rm -rf release.tgz && \
    rm -rf docker/release.tgz

Jenkins DevOps Pipeline Code

env.GIT='ssh://[email protected]'
env.name='project-name'
def timeStamp = Calendar.getInstance().getTime().format('YYYYMMddhhmmss',TimeZone.getTimeZone('Asia/Shanghai'))
env.BUILD_TIMESTAMP = timeStamp
    node("CI-NODE-NAME"){
          stage('Git Checkout'){
            sh '''
            rm -rf ./*
            '''
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'your-id',url: env.GIT]]])
          }
          stage('Build and Push Image'){
              withCredentials([string(credentialsId: 'your-token', variable: 'HUB_TOKEN')]) {
                  sh '''
                    #!/bin/bash -ilx
                  
                    cd $WORKSPACE/
                    chmod -R 777 $WORKSPACE/
                    rm -rf ./docker/release.tgz
                    sleep 5
                    cnpm install --production --unsafe-perm
                    sleep 5
                    tar -cvzf ./docker/release.tgz .
                    sleep 5
                    cd $WORKSPACE/docker/
                    
                    docker rmi */*/${name} -f
                    sleep 5
                    docker build --rm -t */*/${name}:${BUILD_TIMESTAMP} .
                    sleep 5
                    
                    docker push */*/${name}:${BUILD_TIMESTAMP} .
                    sleep 5
                  
                  '''
              }
              
          }
        
    }
    
    
    node("node-to-deploy"){
        
          stage('Pull Image And Run'){
              withCredentials([string(credentialsId: 'your-token', variable: 'HUB_TOKEN')]) {
                  sh '''
                  set +e
                  docker rm -f ${name}
                  sleep 30
                  docker pull */*/${name}:${BUILD_TIMESTAMP}
                  docker run -d --name ${name} --net=host --ulimit nofile=200000 -v /data0/${name}/logs:/root/logs -v /etc/localtime:/etc/localtime:ro -m 1536M --memory-swap 2048M */*/${name}:${BUILD_TIMESTAMP}
                  '''
              }
              
          }
        
    }
    
    

Original Jenkins Build Mode

Shell

#!/bin/bash -ilx

cd $WORKSPACE/
chmod -R 777 $WORKSPACE/
rm -rf ./docker/release.tgz
sleep 5
cnpm install --production --unsafe-perm

sleep 5
tar -cvzf ./docker/release.tgz .
sleep 5
cd $WORKSPACE/docker/
docker rm ${JOB_BASE_NAME} -f
sleep 5
docker rmi */*/${JOB_BASE_NAME} -f
sleep 5
docker build --rm -t */*/${JOB_BASE_NAME} .
sleep 5

docker push */*/${JOB_BASE_NAME}
sleep 5

After Building Stage

sleep 5

docker run -d --name ${JOB_BASE_NAME} --net=host --ulimit nofile=200000 -v /data0/${JOB_BASE_NAME}/logs:/root/logs -v /etc/localtime:/etc/localtime:ro -m 1536M --memory-swap 2048M */*/${JOB_BASE_NAME}

sleep 1

Tag summary

Content type

Image

Digest

Size

196.5 MB

Last updated

almost 6 years ago

docker pull leonard47/egg-node-with-headless