dockerfile基础镜像构建与应用vue+jdk8

nginx基础镜像构建

基础Dockerfile

FROM nginx:1.19.6 
ENV TZ "Asia/Shanghai"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && rm -rf /etc/nginx/conf.d/* && mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
    echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list && \
    echo "deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >>/etc/apt/sources.list

#ARG PORT
#COPY ./dist/  /opt/admin/dist/

#EXPOSE ${PORT:-8080}
COPY nginx.conf /etc/nginx/nginx.conf

# docker build -t 你的镜像仓库/nginx:v1.19.6 .

nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 65535;
}

http {
    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  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    #keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
        keepalive_timeout 120;
        server_tokens off;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;

	#Gzip Compression
        gzip on;
        gzip_buffers 16 8k;
        gzip_comp_level 6;
        gzip_http_version 1.1;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        gzip_types
            text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
            text/javascript application/javascript application/x-javascript
            text/x-json application/json application/x-web-app-manifest+json
            text/css text/plain text/x-component
            font/opentype application/x-font-ttf application/vnd.ms-fontobject
            image/x-icon;
        gzip_disable  "msie6";
#If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
        open_file_cache max=1000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
}

业务Dockerfile,vue项目生成dist拷贝

FROM 你的镜像仓库/nginx:v1.19.6
COPY dist /opt/admin/dist
CMD [ "nginx", "-g", "daemon off;"]

deployment,配置使用configmap

apiVersion: v1
data:
  marketing.conf: |
    server {
        listen       8080;
        server_name  localhost;
        underscores_in_headers on;
        client_header_timeout 300s;        #调大点
        client_body_timeout 300s;          #调大点
        client_max_body_size 100m;         #主要是这个参数,限制了上传文件大大小
        client_body_buffer_size 256k;
        # index index.html;
        access_log /var/log/nginx/access.log main;
        error_log  /var/log/nginx/error.log;
        location / {
            root   /opt/admin/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location ^~ /api/ {
            proxy_pass  http://marketing-gateway-web-svc:9090/;
        }
        location /site {
           alias /opt/site;
           autoindex on;
        }
        location ~ ^/healthcheck {
            default_type text/html;
            return 200 'ok!';  
            access_log /var/log/nginx/health_access.log main;
        }
    }
kind: ConfigMap
metadata:
  name: gwm-marketing-frontend-antd
  namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: gwm-marketing-frontend-antd
  name: gwm-marketing-frontend-antd
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gwm-marketing-frontend-antd
  template:
    metadata:
      labels:
        app: gwm-marketing-frontend-antd
    spec:
      containers:
        - env:
            - name: APP_NAME
              value: gwm-marketing-frontend-antd
          image: >-
            你生成的新镜像:latest
          imagePullPolicy: Always
          lifecycle:
            preStop:
              exec:
                command:
                  - nginx
                  - '-s'
                  - quit
          name: gwm-marketing-frontend-antd
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: '2'
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 1Gi
          volumeMounts:
            - mountPath: /etc/nginx/conf.d/marketing.conf
              name: ng-conf
              subPath: conf.d/marketing.conf
      imagePullSecrets:
        - name: 你的imagePullSecrets
      volumes:
        - configMap:
            defaultMode: 420
            items:
              - key: marketing.conf
                path: conf.d/marketing.conf
            name: gwm-marketing-frontend-antd
          name: ng-conf

jdk8基础镜像构建

基础Dockerfile

FROM openjdk:8-jdk-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && apk add tzdata curl busybox-extras && rm -rf /var/cache/apk/* && mkdir -p /usr/skywalking/agent/
ADD agent/ /usr/skywalking/agent/
COPY stop.sh /opt/

# docker build -t 你的镜像仓库/openjdk:8-jdk-alpine .

优雅退出脚本stop.sh

#!/bin/sh
#系统Alpine Linux 3.9
#结合preStop实现pod程序优雅退出
echo ""
echo "begin to shutdown..."

#根据端口号查一下pid
PID=`ps -ef   |grep java |grep -v "grep" |awk '{print $1}'`

if [ ! -n "$PID" ];
  then
    echo ""
    echo "pid is not exist"
    exit 1
fi

kill $PID

#看看进程还在吗
UP_STATUS=`ps -ef  |grep java |grep -v "grep" |awk '{print $1}' | wc -l`

if [ $UP_STATUS -le 0 ];
  then
    echo "shutdown succesful..." >> /logs/console.log
  else
    echo ""
    echo "pid = $PID"
    TIME_OUT=30
    TIME_COUNT=0
    while [ $TIME_COUNT -le $TIME_OUT ];
    do
      UP_STATUS=`ps -ef  |grep java |grep -v "grep" |awk '{print $1}' | wc -l`
      if [ $UP_STATUS -le 0 ];
      then
        TIME_COUNT=999
      else
        TIME_COUNT=$(($TIME_COUNT+1))
      fi
      echo TIME_COUNT: ${TIME_COUNT}
      echo "waiting for shutdown ..."
      echo "waiting for shutdown ..." >> /logs/console.log
      sleep 1
    done  
    if [ $UP_STATUS -le 0 ];
      then
        echo ""
        echo "shutdown successful..." >> /logs/console.log
      else
        echo ""
        ps -ef | grep "$PID" | grep -v grep | grep "$SERVER_NAME"
        echo ""
        echo "shutdown failed...kill -9 $PID" >> /logs/console.log
        kill -9 $PID
    fi
fi

业务Dockerfile

FROM 你的镜像仓库/openjdk:8-jdk-alpine
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk del tzdata

ARG APP_FILE=target/gwm-marketing-uc-server.jar
ENV LOG_PATH=/logs
COPY ${APP_FILE} gwm-marketing-uc-server.jar

CMD java $JAVA_OPTS -jar gwm-marketing-uc-server.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值