Dockerfile构建SpringBoot项目

news2025/7/6 23:06:50

【1】将SpringBoot项目打包

  • jar包-->用JDK运行(我们这里打成jar包)
  • war包-->用Tomcat运行

MySQL的url配置

1.useSSL=false  MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭
2.allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。
3.serverTimezone=UTC 设置时区,mysql驱动8.0+也要指定时区,不然也会报一些错

如果使用的mysql是8.0+,建议最好把以上三个参数设置下,避免发生一些莫名错误。

【2】Linux服务器创建一个空目录

mkdir spring-boot-start

【3】将jar上传到Linux服务器的该目录下

工具随意:我用Xftp

【4】基于Docker要构建一个MySQL应用

SpringBoot项目需要使用MySQL数据库

docker run -d \
-p 3306:3306 \
--name mysql-li \
--restart=always \
-v hospital-mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=010401 \
mysql:8.0.16

【5】编写Dockerfile文件

基于JDK构建的镜像,如果是war包,则要基于Tomcat构建镜像

将jar放入容器的根目录

容器启动后在根目录执行java -jar keshe.jar指令

FROM khipu/openjdk17-alpine:latest
ADD ./keshe.jar /keshe.jar
ENTRYPOINT ["java","-jar","keshe.jar"]

【6】构建Docker镜像

[root@localhost spring-boot-start]# docker build -t keshe:1.0 .

Sending build context to Docker daemon  33.02MB
Step 1/3 : FROM khipu/openjdk17-alpine:latest
 ---> 47006fef220c
Step 2/3 : ADD ./keshe.jar /keshe.jar
 ---> 07952ad22493
Step 3/3 : ENTRYPOINT ["java","-jar","keshe.jar"]
 ---> Running in 939a654ed742
Removing intermediate container 939a654ed742
 ---> e09b1e0f15d8
Successfully built e09b1e0f15d8
Successfully tagged keshe:1.0

【7】查看生成的Docker镜像

[root@localhost spring-boot-start]# docker images

REPOSITORY               TAG               IMAGE ID       CREATED         SIZE
keshe                    1.0               5404f7d20f3b   2 minutes ago   397MB

【8】启动Docker容器

[root@localhost spring-boot-start]# docker run --name keshe-lixianhe -p 8080:8080 keshe:1.0

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.5)

2022-11-19 09:09:51.578  INFO 1 --- [           main] com.lixianhe.SpringbootStartApplication  : Starting SpringbootStartApplication using Java 17.0.5 on c4504d233430 with PID 1 (/keshe.jar started by root in /)
2022-11-19 09:09:51.599  INFO 1 --- [           main] com.lixianhe.SpringbootStartApplication  : No active profile set, falling back to 1 default profile: "default"
2022-11-19 09:09:56.774  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-11-19 09:09:56.815  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-11-19 09:09:56.815  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.68]
2022-11-19 09:09:57.069  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-11-19 09:09:57.069  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5207 ms
2022-11-19 09:09:57.441  INFO 1 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
2022-11-19 09:09:57.912  INFO 1 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.4.2 
2022-11-19 09:10:00.218  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-11-19 09:10:00.273  INFO 1 --- [           main] com.lixianhe.SpringbootStartApplication  : Started SpringbootStartApplication in 10.694 seconds (JVM running for 11.928)

【9】访问项目: 成功

【10】使用docker-compose

在Dockerfile的同级目录下创建docker-compose.yml文件,内容如下

version: "3"
services:
  mysql:
    image: mysql:8.0.16
    container_name: keshe-mysql
    networks:
      - keshe
    ports:
      - "3306:3306"
    environment:
      - "MYSQL_ROOT_PASSWORD=010401"
    volumes:
      - "hospital-mysql:/var/lib/mysql"
  spring-boot-start:
    image: keshe:1.0
    container_name: keshe-lixianhe
    networks:
      - keshe
    ports:
      - "8080:8080"
    depends_on:
      - mysql
volumes:
    hospital-mysql: {}

networks:
  keshe:

在同一个网桥下且不是docker0,可以使用容器名称代替IP地址,如下

url: jdbc:mysql://keshe-mysql:3306/db2?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai

【11】运行docker-compose

指令:docker-compose up -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git3:github的使用

1.github创建远程库 创建远程库 名字一般与本地库的名字相同推送远程库push poll https://github.com/likejin123/gitdemo.git 可以创建别名,因为连接太长git remote -v 查看别名 当前没有别名 git remote add gitdemo https://github.com/likejin123/gitdemo.gitg…

初阶数据结构学习记录——여덟 二叉树

树 顾名思义,结构即为树,由一个根节点分出多个节点,这几个节点再继续往下连接其他节点形成一个个子树。不过这棵树是根朝上,叶朝下的。一个根不限制连接多少个节点,把第二层的几个节点也看成根节点,最终形…

2011年408大题总结

2011年408大题第41题第42题第43题第44题第45题第46题第47题第41题 关键信息:有向带权、上三角、行为主序 就可以解决第一二小问 关键路径:最长 0 1 2 3 5,长度为16 第42题 一如既往的暴力 最简单的思路,合并取中位数 所以用数组就…

[附源码]java毕业设计拾穗在线培训考试系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android App开发动画特效中帧动画和电影淡入淡出动画的讲解及实战(附源码和演示视频 简单易懂)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、帧动画 Android的动画分为三类,帧动画,补间动画和属性动画。其中帧动画是实现原理最简单的一种,跟现实生活中的电影胶卷类似,都是在短时间内连续播放多张图片,从而…

Request和Response

目录 1、Request和Response的概述 2、Request对象 2.1、Request继承体系 2.2、Request获取请求数据 2.2.1 获取请求行数据 2.2.2 获取请求头数据 2.2.3 获取请求体数据 2.2.4、获取请求参数的通用方式 2.3 IDEA快速创建Servlet 2.4、请求参数中文乱码问题 2.4.1、POS…

认识Spring

1.1 Spring的历程 早期的 Java EE 使用 EJB 为核心的开发方式,但是这种开发方式在实际开发环境中存在诸多问题: 使用复杂, 代码臃肿, 移植性差等.于是"Spring 之父" Rod Johnson 在其畅销书《Expert One-on-One J2EE Design and Development》中使用一个3万行代码的…

MySQL8.0优化 - 锁 - 按加锁的方式划分:显示锁、隐式锁

文章目录学习资料锁的不同角度分类锁的分类图如下按加锁的方式划分:显示锁、隐式锁隐式锁显式锁学习资料 【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】 【阿里巴巴Java开发手册】https://www.w3…

[附源码]计算机毕业设计JAVA基于Java的快递驿站管理系统

[附源码]计算机毕业设计JAVA基于Java的快递驿站管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: S…

车联网解决方案-最新全套文件

车联网解决方案-最新全套文件一、建设背景面临的挑战1、平台难以支撑高并发接入2、海量数据难以挖掘价值3、缺乏使能套件,开发效率低4、车联网的安全难以保证二、建设架构三、建设方案四、获取 - 车联网全套最新解决方案合集一、建设背景 面临的挑战 1、平台难以支…

Teams Tab App 代码深入浅出 - 配置页面

上一篇文章我们使用Teams Toolkit 来创建、运行 tab app。这篇文章我们深入来分析看一下tab app 的代码。 先打开代码目录,可以看到在 src 目录下有入口文件 index.tsx,然后在 components 目录下有更多的一些 tsx 文件,tsx 是 typescript的一…

实战十二:基于FM算法针对用户商品购买和浏览记录预测用户的行为 代码+数据

1.案例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录、购买记录等等)准确的预测出用户未来的行为;好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item;同时将埋没在长尾中的好商品推荐给可能感兴趣的用户。FM推荐方法…

Qt5开发从入门到精通——第十一篇二节(Qt5 事件处理及实例——键盘事件及实例)

提示:欢迎小伙伴的点评✨✨,相互学习c/c应用开发。🍳🍳🍳 博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩‍🚀 文…

基于DJYOS的UART驱动编写指导手册

1.概述 DJYOS设计通用的串口驱动模型,在此模型的基础上,移植到不同硬件平台时,只需提供若干硬件操作函数,即可完成串口驱动开发,使开发工作变得简单而快速执行效率高。 DJYOS源代码都有特定的存放位置, 建…

记录为小电机安装一个5012编码器(多摩川协议)的过程

目录 1. 编码器接口板介绍 2. 编码器接口板安装 3. 角度读取软件实现 4.总结 为了能得到更精确的角度,于是想要通过在测试电机上安装一个编码器来获取更精确的角度,方便日后调试或者校验使用,这里记录下操作的步骤。 1. 编码器接口板介绍…

Github Actions 自动同步到 Gitee

目录引言具体方案引言 平时开源代码一般已Github为主,但是会遇到网不好的情况,于是考虑将Github仓库自动同步到Gitee上,作为备份。考虑不能手动做这个事情,于是想到了Github Actions 自动化同步到Gitee中 具体方案 假设Github已…

Mybatis Plus一对多联表查询及分页解决方案

文章目录需求需求分析分页问题说明分页问题原因一对多场景一一对多场景二性能优化优化解决方案需求 查询用户信息列表,其中包含用户对应角色信息,页面检索条件有根据角色名称查询用户列表; 需求分析 一个用户对应多个角色,用户…

java计算机毕业设计ssm党支部在线学习

项目介绍 本党支部在线学习是针对目前学习的实际需求,从实际工作出发,对过去的学习系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概念、模型、原…

【深度学习】torch.utils.data.DataLoader相关用法 | dataloader数据加载器 | pytorch

文章目录前言一、DataLoader介绍二、DataLoader的子方法(可调用方法)前言 dataloader数据加载器属于是深度学习里面非常基础的一个概念了,基本所有的图像项目都会用上,这篇博客就把它的相关用法总结一下。 之所以要写这篇&#x…

1-1 开源许可证GPL, BSD, MIT, Mozilla, Apache, LGPL的介绍

文章目录前言开源许可证由来开源许可证类型开源许可证介绍GPL协议BSD协议MIT协议Mozilla许可Apache协议LGPL开源协议前言 开源许可证(Open source licenses),广义来讲是指一种被用于计算机软件或其他产品的,允许在指定的条款内使…