• 主页
  • 读书笔记
  • 备案号:滇ICP备19009238号
所有文章 其他站点 关于我

  • 主页
  • 读书笔记
  • 备案号:滇ICP备19009238号

Docker部署SpringBoot脚本

2023-10-25

使用docker部署SpringBoot项目

对服务器环境没有依赖,只需要jdk部署的项目,可以使用openjdk:8-jdk-alpine基础镜像部署。

不止需要jdk,还需要服务器环境的项目,需要使用ubuntu:20.04等基础镜像部署。

注意:

  • 设置docker容器正确的服务器时间
  • docker端口映射
  • 数据目录挂载本地
  • 日志等目录映射
  • 指定docker中文环境
  • 设置docker控制台日志缓存机制
  • 设置JVM参数
  • 定期清理日志机制

Dockerfile

docker构建镜像的配置文件

使用jdk基础镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 该镜像需要依赖的基础镜像
FROM openjdk:8-jdk-alpine

# 新建目录
RUN mkdir -p /root/btsi-base/heap

# 将当前目录下的jar包复制到docker容器的/目录下
ADD btsi-base-0.0.1-SNAPSHOT.jar /root/btsi-base/btsi-base-0.0.1.jar

# 指定支持中文环境
ENV LANG C.UTF-8

# 声明服务运行在9101端口
# 与内部内置一致
EXPOSE 9101

# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-Xms8g", "-Xmx8g", "-Xss1024k", "-server", "-XX:+UseConcMarkSweepGC", "-XX:+UseParNewGC", "-XX:MaxTenuringThreshold=10", "-XX:+PrintGCTimeStamps", "-XX:+PrintGCDateStamps", "-XX:+PrintGCDetails", "-Xloggc:/root/btsi-base/heap/gc.log", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/root/btsi-base/heap/heapDump.txt", "-jar", "-Dspring.profiles.active=prod", "/root/btsi-base/btsi-base-0.0.1.jar"]

# 指定维护者的名字
MAINTAINER BTSI

使用Ubuntu基础镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 该镜像需要依赖的基础镜像
FROM ubuntu:20.04

# 安装Java运行环境
ADD jdk-8u371-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_371
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

# 指定支持中文环境
ENV LANG C.UTF-8

# 新建目录
RUN mkdir -p /root/btsi-gateway/heap

# 将当前目录下的jar包复制到docker容器的/目录下
COPY dist /root/btsi-gateway/

# 指定工作目录
WORKDIR /root/btsi-gateway/

# 声明服务运行在8095端口
# 与内部内置一致
EXPOSE 8095

# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-Xms8g", "-Xmx8g", "-Xss1024k", "-server", "-XX:+UseConcMarkSweepGC", "-XX:+UseParNewGC", "-XX:MaxTenuringThreshold=10", "-XX:+PrintGCTimeStamps", "-XX:+PrintGCDateStamps", "-XX:+PrintGCDetails", "-Xloggc:/root/btsi-gateway/heap/gc.log", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/root/btsi-gateway/heap/heapDump.txt", "-jar", "-Dspring.profiles.active=xxx", "/root/btsi-gateway/com.btsi.btsi-bcos-gateway-0.0.1-SNAPSHOT.jar"]

# 指定维护者的名字
MAINTAINER BTSI

docker_deploy.sh

构建部署镜像,并运行。如果容器已经存在,会删除,再重新构建,再重新运行新容器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env sh

# 初始化核心参数
# 项目主题
project_name='btsi'
# jar包名称,项目module名称
app_name='btsi-base'
# 发布版本
version='0.0.1'
# 初始端口
INIT_EXPOSE=9101
# 对外服务端口
EXPOSE=9101
# 构建镜像路径,当前jar包的绝对路径
app_path='/deploy/BTSI/BTSI-base'

# 定义Docker镜像名称
docker_image_name=${project_name}/${app_name}
# 定义Docker容器名称
docker_container_name=${project_name}.${app_name}


# 如果同名容器已经存在,则停止删除容器;否则不做任何处理
if docker ps -a --format "{{.Names}}" | grep -q ${docker_container_name}; then
docker stop ${docker_container_name}
echo 'stop container '${docker_container_name}' success!'
docker rm ${docker_container_name}
echo 'delete container '${docker_container_name}' success!'
else
echo 'container '${docker_container_name}' does not exist!'
fi


# 构建镜像
docker build -t ${docker_image_name}:${version} -f ${app_path}/Dockerfile ${app_path}/.
# 一键删除所有None镜像
docker rmi `docker images | grep none | awk '{print $3}'`

# 运行容器
docker run -p ${EXPOSE}:${INIT_EXPOSE} --name ${docker_container_name} -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro -v ${app_path}/logs:/var/logs -v ${app_path}/heap:/root/btsi-base/heap -d ${docker_image_name}:${version} && echo 'run container '${docker_container_name}' success!' || echo 'error: failed to run container '${docker_container_name}''

seelog.sh

查看docker控制台日志

1
2
3

docker logs -f --tail 100 btsi.btsi-base

  • Docker部署
Docker设置日志大小
FISCO解析国密input参数
  1. 1. Dockerfile
    1. 1.1. 使用jdk基础镜像
    2. 1.2. 使用Ubuntu基础镜像
  2. 2. docker_deploy.sh
  3. 3. seelog.sh
© 2023 曳戈泰尔
Hexo Theme Yilia by Litten
  • 所有文章
  • 其他站点
  • 关于我

tag:

  • SHA256
  • AI换脸
  • VITS
  • APM
  • Anaconda
  • AnsibleAWX
  • ArrayList
  • Bean
  • BigDecimal
  • Blender three.js
  • API开放接口
  • xmlRPC
  • Ice
  • MySQL
  • BeanUtils
  • Tomcat
  • Caffeine
  • gradle
  • Docker
  • jdk
  • maven
  • JDK
  • localtime
  • Minio
  • PostgreSQL
  • RT_Linux
  • kafka
  • geany
  • CentOS
  • Elasticsearch
  • Node
  • FastDFS
  • Nginx
  • CompletableFutures
  • CompletableFuture
  • CountDownLatch
  • queue
  • Conflux
  • DefaultIdentifierGenerator
  • gdb
  • Deepin
  • Deferred
  • 自动化部署
  • Nacos
  • Redis
  • RocketMQ
  • docker-compose
  • docker日志
  • Docker部署
  • Drools
  • Vue
  • 持有者作为调用者
  • Error
  • ES
  • 签名上链
  • FISCO
  • Prometheus-Grafana-nodeExporter
  • FISCO开放平台
  • 解析input
  • ForkJoinPool
  • GateWay
  • Git
  • GeoServer
  • GitLab
  • Gradle
  • Spring
  • Gitlab
  • HTTP
  • Hexo GitHub-Pages
  • HttpUtil
  • IDEA
  • Gson
  • 热部署
  • HttpClientUtil
  • 搜索
  • Stream
  • foreach
  • Graphics2D
  • Synchronized
  • 循环
  • Integer
  • base64
  • JAVA
  • Excel
  • openID
  • NowTime
  • MD5
  • 字节流
  • 手机号
  • 支付宝
  • Object
  • 行政区划
  • 序列化
  • telnet
  • 枚举
  • 限流
  • 配置文件
  • 规则执行器
  • cmd
  • netty websocket
  • JAVE2
  • 线程池
  • 分治
  • JMH
  • JVM
  • Jenkins
  • Java调用AI输入输出
  • JWT
  • Kindle
  • Knif4j
  • jar
  • UDP
  • SonarQube
  • 部署
  • Ansible
  • IP
  • socket
  • List排序
  • MQ
  • MapStruct
  • Maven
  • MyBatis-Plus
  • MyBatis
  • 跳板机
  • event
  • trigger
  • 全文索引
  • 扣费 线程安全
  • MybatisPlus
  • LambdaQueryWrapper
  • Navicat
  • Explain
  • 私人助理
  • nacos
  • Nexus
  • WebSocket
  • OSS
  • OkHttpClient
  • OA
  • PicGo
  • 可视化监控
  • Optional
  • SpringBoot
  • 关键词
  • TSV
  • 性能指标
  • json
  • Pycharm
  • 文件夹遍历
  • TCP
  • Qt
  • QueryWrapper
  • Quartz
  • RSA
  • RabbitMQ
  • RateLimiter
  • Redisson
  • 阻塞等待锁
  • ZSET
  • incr
  • 频率限制
  • SAE
  • RESTful API
  • SCP
  • RuoYi
  • SM3
  • SKU
  • SQL
  • SQL前n天
  • SSL
  • Shell脚本自动化
  • Sleuth
  • Socket
  • PageHelper
  • Solidity
  • gateway
  • Batch
  • Spring Boot
  • build.gradle
  • Schedule
  • 循环重试
  • Undertow
  • 多筛选
  • IPFS
  • Jasypt
  • logback
  • 加解密
  • 幂等性
  • Result
  • log
  • Mail
  • 滑块
  • Druid
  • knife4j
  • 注入
  • Full Lite
  • 权限
  • 跨域访问
  • starter
  • 防刷
  • XSS
  • Event
  • 多数据库
  • Scheduled
  • yml
  • Async
  • AOP
  • CurrentUser
  • AutoGenerator
  • netty
  • Openfeign
  • Sentinel
  • Shiro
  • Swagger
  • XMLRPC
  • captcha
  • OAuth
  • 文件上传
  • 验证码登录
  • Response
  • Exception
  • 文件下载
  • 自定义注解
  • Thread
  • 观察者
  • 音视频
  • dll
  • StopWatch
  • String
  • Transactional
  • ThreadLocal
  • TLS
  • 挂载
  • VMware
  • VPN
  • VSAT
  • VScode
  • VS
  • Valid
  • 二维码
  • three.js
  • ECDSA
  • Tornado
  • WorkBench
  • VxWorks
  • select
  • taskSpawn
  • WPS
  • WeBase
  • JavaScript
  • COOKIE
  • 消息推送
  • 开启启动
  • VxWorks WorkBench
  • XStream
  • ab
  • appId appKey
  • printStackTrace
  • gitlab
  • excel2word
  • git
  • 经纬度
  • isNull isEmpty isBlank
  • mybatisplus
  • SSH
  • nohup日志
  • phpstudy
  • npm
  • 图片
  • nginx
  • url
  • xml
  • 去背景
  • 提取学号
  • 一键登录
  • xxl-job
  • 并发
  • 接口
  • 一致性HASH
  • 责任链
  • 两层请求体
  • 二次支付
  • 个人支付
  • 设计模式
  • 代理
  • MERGE
  • 保存MultipartFile
  • PDF
  • 链间数据迁移
  • session
  • 鉴权
  • 证书生成
  • 单例
  • 压测
  • shell
  • 发布Jar
  • sms
  • 升级代理合约
  • 支付
  • 图片转PDF
  • 拍平JSON
  • SSO
  • property
  • 内容安全
  • 循环分页
  • crontab
  • 日志清理
  • 实名
  • 绩效
  • 读书笔记
  • 歌词识别
  • component初始化
  • 抽奖
  • 数据脱敏
  • 验证码
  • 网络攻防
  • 慢排查
  • Native支付
  • 裁剪字符串
  • WebView
  • 文本折叠
  • 上拉加载数据
  • 弹窗输入框
  • 图片裁剪
  • banner
  • 局部刷新
  • 弹窗
  • StorageSync
  • 标签id值
  • openId
  • 角标
  • globalData
  • url传值
  • Feign
  • 懒加载
  • 订阅消息
  • 设备交接
  • 提取txt 提取word
  • 回调
  • 支付超时
  • Assert
  • 乐观锁
  • 服务器
  • 监控
  • 运维
  • 方案
  • Enum
  • 测试
  • 校招
  • 死锁
  • 兑换码
  • 订单
  • 余额扣减
  • sku gson
  • 电商
  • 短信验证码
  • 伏羲PDF
  • 秒杀
  • 后台
  • 不可破解key
  • 排查
  • 线程安全 Map List
  • 上下电
  • CRUD拆分的宽表
  • ip2region
  • 行政
  • 文件校验FileSize
  • ParameterMap
  • EventBus
  • 微信手机号
  • 购买掉单
  • resources
  • 音频时长
  • IDCardUtils
  • Ghelper
  • Forest
  • 邀请
  • 过滤器 拦截器
  • 通信
  • Retry
  • 人脸融合
  • 时间差
  • 短信
  • 集合
  • 长安链

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 区块链
  • GPT
  • gitee1
  • gitee2
  • github
  • Other
徘徊在原子与字节的边缘

将更好的自己呈现给世界



修心至要,事上磨练

一蓑衣,一壶酒,一曲长歌,一剑天涯

见自己,见天地,见众生