周五请假,周六日休息,所以没有更新,今天把印象上边这2年的各种模板和快捷部署命令付一下,既是模板就还是需要根据自己的环境做改变的,不可直接CV。
一、nginx反向正向代理模板 (简单)。
server {
listen 80;
listen [::]:80;
server_name xxx.com; # 你的域名
root /home/ubuntu/djc-model/dist; # 指向文件夹{目录}
index index.html; # 索引的文件 根文件
location / {
try_files $uri $uri/ /index.html;
}
underscores_in_headers on; # 开启自定义请求头,方便下方 proxy_set_header
location /api {
proxy_set_header tenant_key $http_tenant_key; # 自定义请求头
proxy_set_header Authorization $http_Authorization; # 自定义请求头
proxy_pass http://0.0.0.0:8301; # 反向代理的地址
rewrite ^.+api/?(.*)$ /$1 break; # url 重写 可以看此文章 https://cloud.tencent.com/developer/article/1918481
}
}
二、nginx反向代理模板 (复杂)。
server {
listen 80;
server_name localhost;
gzip on;
gzip_static on; # 需要http_gzip_static_module 模块
gzip_min_length 1k;
gzip_comp_level 4;
gzip_proxied any;
gzip_types text/plain text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# 前端打包好的dist目录文件
root /data/;
location /api {
proxy_pass http://0.0.0.0:31790;
proxy_buffer_size 1024k;
proxy_buffers 16 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
proxy_connect_timeout 1200s;
send_timeout 1200s;
client_max_body_size 512m;
rewrite ^.+api/?(.*)$ /$1 break;
}
location /oauth {
proxy_buffer_size 1024k;
proxy_buffers 16 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
proxy_connect_timeout 1200s;
send_timeout 1200s;
proxy_pass https://xxx.net/;
client_max_body_size 100m;
rewrite ^.+oauth/?(.*)$ /$1 break;
}
location /flag {
default_type text/html;
return 200 "true";
}
}
三、k8s-Deployment部署文件,service-node-port文件。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s.kuboard.cn/name: web-xa-sports-h5-test # 元属性名
name: web-xa-sports-h5-test
namespace: test # k8s 命名空间
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/name: web-xa-sports-h5-test
template:
metadata:
labels:
k8s.kuboard.cn/name: web-xa-sports-h5-test
spec:
containers:
- image: ${TAG} # 从容器镜像获取的动态镜像标签,可以写死镜像名。
# imagePullPolicy: Always
name: web-xa-sports-h5-test # pod名
ports:
- containerPort: 80 # 容器端口
protocol: TCP
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s.kuboard.cn/name: web-xa-sports-h5-server-test # 绑定的pod名称
name: web-xa-sports-h5-server-test
namespace: test # 命名空间
spec:
ports:
- name: 'xah5h5'
protocol: TCP
nodePort: 30111
port: 80
targetPort: 80
selector:
k8s.kuboard.cn/name: web-xa-sports-h5-test
type: NodePort
四、docker部署文件(前端)
FROM node:12.18.4-alpine3.11 as builder
WORKDIR /app
COPY ./ /app
RUN npm i --registry https://registry.npm.taobao.org
RUN npm run build
FROM nginx
WORKDIR /data
COPY --from=builder /app/dist /data
COPY --from=builder /app/*.txt /data
RUN rm /etc/nginx/conf.d/default.conf
ADD sports-h5.conf /etc/nginx/conf.d/default.conf
RUN /bin/bash -c 'echo init ok'
五、docker部署文件(后端 - gradle构建)
FROM registry.cn-beijing.aliyuncs.com/fem/fem-gradle:6.7-jdk8 as builder
WORKDIR /app
COPY ./src ./src
COPY build.gradle .
COPY settings.gradle .
RUN gradle clean
RUN gradle build -x test
FROM openjdk:8 as layer-tools
WORKDIR /app
COPY --from=builder /app/build/libs/sports-butler-*.jar ./app.jar
RUN jar -xf ./app.jar
RUN ls
FROM openjdk:8
ARG DEPENDENCY=/app
# 将工作路径的文件 复制到容器中
COPY --from=layer-tools ${DEPENDENCY}/BOOT-INF/lib /application/lib
COPY --from=layer-tools ${DEPENDENCY}/META-INF /application/META-INF
COPY --from=layer-tools ${DEPENDENCY}/BOOT-INF/classes /application
COPY --from=layer-tools ${DEPENDENCY}/org /application/org
ENV TZ=Asia/Shanghai
ENTRYPOINT ["java","-cp","application:application/lib/*","-Dserver.port=${PORT:8892}","com.fem.sportsbutler.SportsButlerApplication"]
六、docker部署文件(后端 - 交由流水线maven构建)
FROM openjdk:8
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /Data_Kanban_Tianjin
WORKDIR /Data_Kanban_Tianjin
EXPOSE 9898
ADD ./target/data-*.jar ./app.jar
CMD java $JAVA_OPTS -jar app.jar --spring.profiles.active=prod
七、springboot - application文件
server:
port: 8892
tomcat:
connection-timeout: 25000
threads:
min-spare: 10
max: 400
max-connections: 1000
accept-count: 500
shutdown: graceful
spring:
datasource:
username: xxxx
password: ${MYSQL_PWD:xxxx}
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${MYSQL_URL:0.0.0.0}:3306/xa-xxx?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8&rewriteBatchedStatements=true
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 600000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
time-between-eviction-runs-millis: 60000
dbcp2:
test-on-borrow: true
jackson:
serialization:
WRITE_DURATIONS_AS_TIMESTAMPS: true
default-property-inclusion: non_null
servlet:
multipart:
max-request-size: 100MB
max-file-size: 100MB
redis:
host: ${REDIS_URL:xxxx}
port: 6379
database: 5
password: ${REDIS_PWD:xxxxx}
timeout: 50000
jedis:
pool:
max-active: 10
min-idle: 0
max-wait: 50000
max-idle: 10
cache:
type: redis
main:
allow-bean-definition-overriding: true
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
global-config:
banner: false
db-config:
id-type: id_worker_str
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
call-setters-on-nulls: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
level:
com.fem.sportsbutler:
mapper: debug
mapper.repo: debug