多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

docker部署后端服务的脚本

docker部署后端服务的脚本 创建Dockerfile#FROM registry.cn-hangzhou.aliyuncs.com/qiluo-images/openjdk:17FROM registry.cn-hangzhou.aliyuncs.com/qiluo-images/eclipse-temurin:17-jdk WORKDIR /app COPY *.jar /app/ COPY pod_start.sh /app/ ENTRYPOINT[sh,/app/pod_start.sh]创建pod_start.sh#!/bin/bashecho23.210.52.55 uc-openplatform.bigdatacq.com/etc/hostsecho23.210.52.11 zd-openplatform.bigdatacq.com/etc/hostsecho172.16.0.5 redis.cqdx.com/etc/hostsecho172.16.0.4 pgsql.cqdx.com/etc/hostsecho172.16.0.5 rustfs.cqdx.com/etc/hostsecho127.0.0.1 gateway.cqdx.com/etc/hostsjarnamels/app/*.jarJVM-server -Xmx2G -Xms1G -XX:UseG1GC -Djava.security.egdfile:/dev/./urandomjava$JVM-jar$jarname--spring.profiles.activedev或者#!/bin/bashecho23.210.52.55 uc-openplatform.bigdatacq.com/etc/hostsecho23.210.52.11 zd-openplatform.bigdatacq.com/etc/hostsecho172.16.0.5 redis.cqdx.com/etc/hostsecho172.16.0.4 pgsql.cqdx.com/etc/hostsecho172.16.0.5 rustfs.cqdx.com/etc/hostsecho127.0.0.1 gateway.cqdx.com/etc/hostsJVM-server -Xms4G -Xmx4G -XX:AlwaysPreTouch -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:ParallelRefProcEnabled -XX:DisableExplicitGC -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/data/logs/heapdump -Djava.security.egdfile:/dev/./urandomjava$JVM-jar$jarname--spring.profiles.activedevJVM-server \ -Xms4G \ -Xmx4G \ -XX:AlwaysPreTouch \ -XX:UseG1GC \ -XX:MaxGCPauseMillis200 \ -XX:G1HeapRegionSize4M \ -XX:InitiatingHeapOccupancyPercent35 \ -XX:ParallelRefProcEnabled \ -XX:UseStringDeduplication \ -XX:StringDeduplicationAgeThreshold3 \ -XX:DisableExplicitGC \ -XX:HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath/data/logs/heapdump \ -XX:ErrorFile/data/logs/hs_err_pid%p.log \ -Xlog:gc*,gcagetrace,safepoint:file/data/logs/gc.log:time,uptime,level,tags:filecount5,filesize100M \ -Djava.security.egdfile:/dev/./urandom \ -Dfile.encodingUTF-8JVM G1GC 优化参数说明表参数建议值说明注意事项-XX:MaxGCPauseMillis200G1垃圾收集器目标最大暂停时间10ms过于激进可能导致吞吐量下降200ms是平衡点-XX:G1HeapRegionSize4M设置G1区域大小Region Size根据堆大小自动计算通常1-32MB4M适合4GB堆-XX:InitiatingHeapOccupancyPercent35堆使用率阈值触发并发GC周期默认45%降低可减少Full GC风险-XX:UseStringDeduplication开启开启字符串去重节省内存Java 8u20支持对字符串密集型应用有效-Xlog:gc*开启JVM统一日志系统记录GC信息替换旧的-XX:PrintGCDetails等参数补充推荐参数参数建议值说明-XX:ParallelRefProcEnabled开启并行处理引用减少GC停顿时间-XX:AlwaysPreTouch开启启动时预分配内存避免运行时延迟-XX:StringDeduplicationAgeThreshold3字符串被GC扫描3次后去重-XX:G1ReservePercent10预留10%堆空间防止晋升失败-XX:G1HeapWastePercent5可回收垃圾达到5%时启动混合GC典型配置示例# 4GB堆内存优化配置JVM_OPTS-Xms4g -Xmx4g \ -XX:UseG1GC \ -XX:MaxGCPauseMillis200 \ -XX:G1HeapRegionSize4m \ -XX:InitiatingHeapOccupancyPercent35 \ -XX:UseStringDeduplication \ -XX:StringDeduplicationAgeThreshold3 \ -XX:ParallelRefProcEnabled \ -Xlog:gc*,gcagetrace:filegc.log:time,uptime,level,tags \ -XX:HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath./heapdump.hprofbuild镜像 bashdockerbuild-tchongqing-xxxx-service-web:1.0.0.服务部署脚本 (deploy_chongqing_web.sh)#!/bin/bash# 定义变量IMAGE_NAMEchongqing-xxxx-service-web:v1.0.0CONTAINER_NAMEchongqing-xxxx-service-webHOST_PORT8000CONTAINER_PORT8000DATA_DIR/data/chongqing-xxx-service-web# 检查Docker是否可用check_docker(){if!command-vdocker/dev/null;thenecho错误Docker未安装或未在PATH中exit1fi}# 构建Docker镜像build_image(){echo开始构建Docker镜像...dockerbuild-t$IMAGE_NAME.if[$?-eq0];thenecho镜像构建成功$IMAGE_NAMEelseecho镜像构建失败exit1fi}# 运行Docker容器run_container(){echo检查数据目录...mkdir-p$DATA_DIRecho启动容器...dockerrun-d-it\--privilegedtrue\--restartalways\--name$CONTAINER_NAME\-p$HOST_PORT:$CONTAINER_PORT\-v$DATA_DIR:/app/\$IMAGE_NAMEif[$?-eq0];thenecho容器启动成功$CONTAINER_NAMEecho访问地址http://localhost:$HOST_PORTelseecho容器启动失败exit1fi}# 显示菜单show_menu(){echoecho请选择操作echo1) 仅构建镜像echo2) 仅运行容器echo3) 构建镜像并运行容器echo4) 退出echoread-p请输入选项 [1-4]: optionechocase$optionin1)check_docker build_image;;2)check_docker run_container;;3)check_docker build_image run_container;;4)exit0;;*)echo无效选项show_menu;;esac}# 主程序clearecho重庆服务平台Web服务部署脚本show_menu将脚本保存为 deploy_chongqing_web.sh给予执行权限chmodx deploy_chongqing_web.sh运行脚本./deploy_chongqing_web.sh
返回列表