Sign inSign up

leonard47/nginx-frontend-webserver

By leonard47

•Updated almost 6 years ago

Image
0

62

leonard47/nginx-frontend-webserver repository overview

⁠前端镜像

docker目录中存放下列内容。

⁠1. conf/default.conf

server {
    listen 8000;
    index index.html;
    root /var/www/public;
   
    charset utf-8;

    client_max_body_size 32M;

    location / {
      root /var/www/public;
      index index.html;
	}
    #静态文件,nginx处理
    location ~ ^/(images|javascript|js|css|flash|media|static)/{
        root /var/www/public;
        #过期时间1天
        expires 1d;
        #关闭媒体文件日志
        access_log off;
        log_not_found off;
    }
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
	    root /var/www/public;
	}
	error_page 404 /404.html;
	location = /404.html {
        root  /var/www/public;
  	}
    #禁止访问的文件.htxxx
    location ~ /\.ht {
        deny all;
    }
   
}

⁠2. nginx/nginx.conf

user  nginx;
#==worker进程数,通常设置等同于CPU数量,auto为自动检测
worker_processes  1;

#==worker进程打开最大文件数,可CPU*10000设置
worker_rlimit_nofile 10000;

error_log  /data/logs/error.log warn;
pid        /var/run/nginx.pid;


events {
	#==worker进程同时打开的最大连接数,可CPU*2048设置
    worker_connections  2048;
    #==告诉nginx收到一个新链接通知后接受尽可能多的链接
    multi_accept on;
    #==设置用于复用客户端线程的轮训方法
    use epoll;
}


http {
	#打开或关闭错误页面中的nginx版本号deng
    server_tokens off;

    include       /etc/nginx/mime.types;
    default_type  text/html;
    charset UTF-8;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /data/logs/access.log  main;

    #==优化磁盘IO设置,指定nginx是否调用sendfile函数来输出文件,普通应用设为on,下载等磁盘IO高的可设为off
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

daemon off;

⁠3. 50x.html

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1">
  <meta name="viewport" content="width=device-width">
  <title>出错了</title>
  
</head>

<body>
  <div id="ice-container">
    <div class="ice-layout ice-blank-layout" style="min-height: 100vh;">
      <div class="page3-page">
        <div class="empty-content">
          <div class="container-block " style="background-color: rgb(255, 255, 255); border-radius: 6px; padding: 20px; margin-bottom: 20px;">
            <div class="exception-content" style="display: flex; justify-content: center; align-items: center;">
              <img src="https://img.alicdn.com/tfs/TB1w4M7bNrI8KJjy0FpXXb5hVXa-260-260.png" class="imgException" alt="empty" style="max-width: 100px;margin-right: 10px;">
              <div>
                <h3 class="title" style="color: rgb(51, 51, 51);">服务器异常</h3>
                <p class="description" style="color: rgb(102, 102, 102);">服务器异常,请刷新或返回</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  

</body>

</html>

⁠4. 404.html

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1">
  <meta name="viewport" content="width=device-width">
  <title>您访问的内容不存在</title>
  
</head>

<body>
  <div id="ice-container">
    <div class="ice-layout ice-blank-layout" style="min-height: 100vh;">
      <div class="page3-page">
        <div class="empty-content">
          <div class="container-block " style="background-color: rgb(255, 255, 255); border-radius: 6px; padding: 20px; margin-bottom: 20px;">
            <div class="exception-content" style="display: flex; justify-content: center; align-items: center;">
              <img src="https://img.alicdn.com/tfs/TB1WNNxjBHH8KJjy0FbXXcqlpXa-780-780.png" class="imgException" alt="empty" style="max-width: 100px;margin-right: 10px;">
              <div>
                <h3 class="title" style="color: rgb(51, 51, 51);">页面暂无内容</h3>
                <p class="description" style="color: rgb(102, 102, 102);">抱歉,页面暂无内容,请看看其他页面</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  

</body>

</html>

⁠5. Dockerfile

FROM leonard47/nginx-frontend-webserver

EXPOSE 8000

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

RUN mkdir -p /data/logs/

ADD build/ /var/www/public/${YOUR_CONTEXT_PATH}

ADD 50x.html /var/www/public/
ADD 404.html /var/www/public/

⁠需要适配项目的地方

  1. conf/default.conf里listen的端口号
  2. Dockerfile 里端口号
  3. 自定义404和50x页面

⁠nginx 目录

重写nginx配置、调优

⁠conf 目录

定义虚拟主机,文件处理

⁠404.html

自定义无资源页面

⁠50x.html

自定义服务器异常页面

⁠Traditional Jenkins Build Code

Exec Shell:

cd $WORKSPACE/
rm -rf ./*.zip
sleep 1
tar cvzf ${JOB_BASE_NAME}.zip ./build ./docker
sleep 5

After Build: transfer set ${JOB_BASE_NAME}.zip TO /images_ci/${JOB_BASE_NAME}

cd /images_ci/${JOB_BASE_NAME}
rm -rf ./build ./docker
sleep 5

tar xvzf ./${JOB_BASE_NAME}.zip
sleep 5
rm -rf ./${JOB_BASE_NAME}.zip
sleep 1

cp -ri -rf ./build/ ./docker/
sleep 5

#docker
cd /images_ci/${JOB_BASE_NAME}/docker

docker rm -f  ${JOB_BASE_NAME}
sleep 1
docker rmi */${JOB_BASE_NAME}:jenkins
sleep 5

docker build -t */${JOB_BASE_NAME}:jenkins .

⁠Jenkins Pipeline Code

参数:PROJECT/GIT_GROUP/GIT_BRANCH/MAVEN_MODULE/VERSION

env.GIT='ssh://git@git/'+env.GIT_GROUP+'/'+env.PROJECT+'.git'
env.BRANCH = '*/'+env.GIT_BRANCH
def timeStamp = Calendar.getInstance().getTime().format('YYYYMMddhhmmss',TimeZone.getTimeZone('Asia/Shanghai'))
env.BUILD_TIMESTAMP = env.SANDBOX=='development' ? 'jenkins': timeStamp
env.BUILD_HARBOR_TARGET = env.SANDBOX=='development' ? 'ci': 'k8s'

//println(env.BUILD_HOSTS)
node("BUILD-NODE"){
  stage('Git Checkout'){
    sh '''
    rm -rf ./*
    '''
    checkout([$class: 'GitSCM', branches: [[name: env.BRANCH]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'git-token',url: env.GIT]]])
  }

  stage('Build and Push Image'){
      withCredentials([string(credentialsId: 'hub-token', variable: 'HUB_TOKEN')]) {
          sh '''
          cp -ri -rf ./build/ ./docker/
          
          docker login -u username -p ${HUB_TOKEN} hub.*.com
          cd docker
          
          docker build -t domainname/${BUILD_HARBOR_TARGET}/${MODULE_NAME}:${BUILD_TIMESTAMP} .
          docker push domainname/${BUILD_HARBOR_TARGET}/${MODULE_NAME}:${BUILD_TIMESTAMP}
          '''
      }
      
  }

}

for (item in env.HOSTS.tokenize(',')){

    node(item){
      stage('Pull Image And Run on ' + item){
          withCredentials([string(credentialsId: 'hub_token_id', variable: 'HUB_TOKEN')]) {
              sh '''
              set +e
              sleep 10
    
              docker rm -f ${MODULE_NAME}
              
              docker pull domainname/${BUILD_HARBOR_TARGET}/${MODULE_NAME}:${BUILD_TIMESTAMP}
              docker run -d -v /data0/${MODULE_NAME}/logs:/data/logs --name ${MODULE_NAME} --net="host" \
                 --ulimit nofile=200000 -v /etc/localtime:/etc/localtime:ro \
                 domainname/${BUILD_HARBOR_TARGET}/${MODULE_NAME}:${BUILD_TIMESTAMP}
              
              '''
          }
          
      }
        
    }

}


    

Tag summary

Content type

Image

Digest

Size

42.6 MB

Last updated

almost 6 years ago

docker pull leonard47/nginx-frontend-webserver