docker-compose部署springboot应用

2023-10-27

docker-compose部署springboot应用

最开始使用tomcat部署java应用,如果要部署多个系统,我通常部署多个tomcat,每个tomcat一个系统,可以添加到系统服务自动启动。后来随着springboot流行,改为将应用打成jar包直接通过jar包启动,这样部署很方便,但是设置后台服务不方便,并且每次启动要去查启动参数(当然也可以写一个shell脚本辅助)。

再后来随着docker流行,改为使用docker部署,倒是方便很多。这里介绍我使用docker和docker-compose部署的操作

1. 准备基础镜像

需要准备一个具有java环境的基础镜像,我使用centos7(centos7不久以后停止官方支持,可以考虑使用其他linux),然后加入jdk、字体,并修改环境变量等配置。下面是Dockerfile

(字体是因为我的项目里要生成中文的图片,没有字体会有乱码问题。jdk和字体可以自行在网上找到)

将jdk、字体放在同一个目录,然后执行docker build -t c7_j8_app .即可制作镜像(c7代表centos7,j8是jdk8,app是应用名称)

#制作centos-jdk1.8镜像
FROM centos:7
MAINTAINER fantoutou@163.com
ENV TZ=Asia/Shanghai
#复制jdk
ADD jdk/jdk1.8   /usr/local/jdk1.8/

#设置java环境变量
ENV JAVA_HOME /usr/local/jdk1.8
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
#增加宋体字体
#复制本地字体库(fonts是Dockerfile同级目录)
ADD simsun.ttc /usr/share/fonts/chn/simsun.ttc

#安装字体库
	RUN yum -y install fontconfig \
	&& chmod 777 /usr/share/fonts/chn \
	&& yum -y install ttmkfdir \
	&& ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir \
	&& fc-cache

2. docker-compose启动

都是常用的参数和命令。因为network_mode使用的是host模式,所以没有做端口映射。

我使用start.sh脚本启动,主要是因为日志问题没有找到更好额解决方法

下面是 docker-compose.yml

version: '2'
services:
  app:
    image: c7_j8_app
    restart: always
    container_name: app_dev
    privileged: true
    working_dir: /home/app
    entrypoint: sh /home/app/start.sh
    network_mode: host
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - server.port=8085
      - JAVA_OPTS=-Xms4g -Xmx4g
    volumes:
      # 应用目录
      - ./app:/home/app:rw
      # 启动脚本
      - ./start.sh:/home/app/start.sh
      # 附件目录映射
      - /home/app/attachments:/home/app/attachments:rw
      # 日志路径映射
      - /home/log:/home/log:rw

start.sh

nohup java -jar app-exec.jar > ./app.log &
tail -f app.log

3. 其他

如果要部署多台服务器,可以搭一个harbor,然后把基础镜像或者应用镜像传到harbor,然后在要部署的服务器拉取镜像启动即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose部署springboot应用 的相关文章

随机推荐

  • SQLServer 2008 下载地址(微软官方网站)

    SQLServer 2008 下载地址 微软官方网站 中文版 3 28GB http sqlserver dlservice microsoft com dl download B 8 0 B808AF59 7619 4A71 A447 F
  • 2021年数模国赛B题--乙醇偶合制备 C4 烯烃

    一 题目 C4 烯烃广泛应用于化工产品及医药的生产 乙醇是生产制备 C4 烯烃的原料 在制备过程中 催化剂组合 即 Co 负载量 Co SiO2 和 HAP 装料比 乙醇浓度的组合 与温度对 C4 烯烃的选择性和 C4 烯烃收率将产生影响
  • 前端面试——实现数组的复制

  • 来了!Goby一年一度的红队专版正式发布!!

    某大型活动临近 盆圈开始热闹起来 各种抢人大赛以及群集结号声 Goby今年有什么动作呢 继续支持攻击队 红队 也称蓝军 为何有且仅有红队专版 如果对方是一位绝世武功高手且拥有绝世宝剑 你肯定没有信心与他一战 但如果给你配一把枪呢 哪怕是一把
  • 关于微信小程序复制到剪贴板显示默认提示词的问题

    早上一上班 看到一个需求 小程序实现点击复制到剪贴板 在开发文档找了 剪贴板 关键词 就直接找到了相关的接口 如图 心里很是欣慰 结果如下 提示词显示固定 不能修改任何东西 在社区里找了一下 得到的结果 暂未解决 针对这一问题 网上解决办法
  • flask的ORM操作

    flask的ORM操作 目录 flask的ORM操作 ORM Flask SQLAlchemy扩展 数据模型 模型之间的关联 表管理 操作数据 新增 修改 删除 事务 查询 Flask SQLAlchemy提供了分页方法 四 文件的迁移 f
  • Matlab 2014b m_map 工具箱的19种投影projection

    很久之前做过mmap的投影代码及图 不过当时自己水平也不行 无论是对图的理解还是对matlab的理解都不足 后来博客搬来搬去的 图也丢了 代码也挂了 正好最近又在用 所以重新做了一遍 投影主要分四类 1 Azimuthal projecti
  • mysql的timestamp会存在时区问题?

    简介 众所周知 mysql中有两个时间类型 timestamp与datetime 但当在网上搜索timestamp与datetime区别时 会发现网上有不少与时区有关的完全相反的结论 主要两种 timestamp没有时区问题 而dateti
  • Visual Studio 2019 community 安装教程及使用

    Visual Studio 2019 Community 详细安装教程及使用 步骤1 获取官方地址 https visualstudio microsoft com zh hans vs 步骤2 打开您刚才下载的文件 进行安装 最后会出现如
  • 动手学深度学习——数据操作之ndarray与tensor间的转换

    为什么可以转换 无论使用哪个深度学习框架 它的张量类 在MXNet中为ndarray 在PyTorch和TensorFlow中为tensor 都与Numpy的ndarray类似 但深度学习框架又比Numpy的ndarray多一些重要功能 首
  • arr访问绝对地址_西门子1200PLC与汇川伺服电机的MODBUS-RTU通讯

    一 硬件准备 以下以 CPU1215C DC DC DC和CM1241 RS485 模块为例 介绍S7 1200 Modbus RTU 主站通信控制汇川IS620P系列伺服驱动器的组态及编程步骤 二 伺服驱动器通信参数设置 功能码 名称 设
  • Qt扫盲-QMouseEvent 鼠标事件

    QMouseEvent 鼠标事件理论 一 概述 二 鼠标事件的传递 三 组合修饰符 四 鼠标坐标位置 五 使用方式 一 概述 当在QWidget窗口内的鼠标按钮被按下或释放 或者鼠标光标被移动时 就会发生鼠标事件 鼠标按下释放没有什么特殊的
  • R语言:利用leafletCN创建交互式地图

    R语言 利用leafletCN创建交互式地图 介绍 地图是一种强大的可视化工具 它可以帮助我们展示空间数据并揭示地理模式 R语言中的leafletCN包提供了创建交互式地图的功能 而且还支持中文地图的显示 本文将向您展示如何使用leafle
  • 百度地图点聚合-Javascript-复制可用

    百度地图点聚合 Javascript 复制可用 功能介绍 整体思路 遇到问题 具体实现 一 cdn引用 二 使用 三 自定义标记点图标 功能介绍 本文记录了百度地图BMap实现点聚合效果 如下图实例 地图缩小时聚合效果 地图放大后显示效果
  • 机器学习笔记——Neural Network

    神经网路算法Neural Network 神经网络包含输入层input layer 隐藏层hidden layer 输出层output layer三部分 多层神经网络中常用的优化参数算法 backpropagation 反向传播算法 多层神
  • 【开发工具】PyChram安装Python第三方库

    目录 一 进入控制台 二 安装第三方库 一 进入控制台 打开PyChram 设置 项目 Python解释器 查看解释器所在路径 根据路径打开解释器所在文件夹 在上方路径中输入cmd 回车 进入cmd控制台 二 安装第三方库 输入命令 这里使
  • 独家

    清华大数据 赛事经验分享 系列讲座是清华 青岛数据科学研究院继 应用 创新 和 技术 前沿 系列后推出的又一学术品牌 旨在分享国内外大数据领域重要赛事获胜团队及个人的参赛历程及其获胜经验 本期我们邀请到CIKM AnalytiCup2017
  • 【Qt串口调试助手】1.7 - QLabel标签插入链接,修改Qt应用图标

    QLabel标签添加超链接 点击 即可通过默认浏览器打开网页 GitHub源码 Qt串口调试助手下载 QLabel标签添加链接 Qt支持 HTML语音 所以可以对链接颜色 字体 有无下划线等进行设置 以下是使用 默认蓝色 无下划线的示例 状
  • leetcode第84场双周赛

    leetcode第84场双周赛 一 6141 合并相似的物品 1 题目描述 2 思路分析 3 代码实现 二 6142 统计坏数对的数目 1 题目描述 2 思路分析 3 代码实现 三 6174 任务调度器 II 1 题目描述 2 思路分析 3
  • docker-compose部署springboot应用

    docker compose部署springboot应用 最开始使用tomcat部署java应用 如果要部署多个系统 我通常部署多个tomcat 每个tomcat一个系统 可以添加到系统服务自动启动 后来随着springboot流行 改为将