Docker Compose部署Springboot+Mysql项目

2023-05-16

声明:本文CSDN作者原创投稿文章,未经许可禁止任何形式的转载,原文链接

在上一篇文章Spring Boot(Maven)+Docker打包中,我们实现了将Springboot项目源代码一键打包部署为Docker服务。

上文中,我们的Springboot项目如果要与数据库的连接,就必须连接公网IP来使用,本文将会把Springboot+Mysql进行一键部署,开箱即用。

本文应用场景是:web服务的单机部署。

前提

Spring Boot项目已可使用Maven打包为jar文件,并可通过java -jar example-0.0.1-SNAPSHOT.jar启动此文件。

必须安装Docker,Docker Compose。

操作

第一步:在项目根目录下创建文件Dockerfile,内容如下,本文项目使用的是jdk11,开放8086端口。注意:需要将下文的两处example-0.0.1-SNAPSHOT改为你的项目的名字。

FROM maven:3.8.3-openjdk-11 AS MAVEN_BUILD
COPY settings.xml /usr/share/maven/conf/settings.xml
COPY pom.xml /build/
COPY src /build/src/
WORKDIR /build/
RUN mvn package

FROM maslick/minimalka:jdk11
COPY --from=MAVEN_BUILD /build/target/example-0.0.1-SNAPSHOT.jar /app/
RUN mkdir -p "/app/static/images/upload"
EXPOSE 8086
ENTRYPOINT ["java","-jar","/app/example-0.0.1-SNAPSHOT.jar"]

你会注意到Dockerfile与上篇文章仅有一处不同,即多了一行RUN mkdir -p "/app/static/images/upload",这是因为我的后端项目接收存储了一些用户上传的文件,我使用Volume对文件内容进行了持久化。

第二步:创建settings.xml文件,替换掉Maven官方源,使用国内源,文件内容与上篇文章相同。

第三步:在项目根目录下创建文件docker-compose.yml,内容如下:

version: '3'
services:
  web:
    build: .
    container_name: web-server
    restart: always
    volumes:
      - imagedata:/app/static/images/upload
    ports:
      - "8086:8086"
    depends_on:
      - mysql
  mysql:
    image: mysql:8.0.26
    container_name: mysql
    restart: always
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      MYSQL_DATABASE: webserver #创建一个初始的空数据库,名为webserver
      MYSQL_ROOT_USER: root #root用户
      MYSQL_ROOT_PASSWORD: QWEasd123 #root密码
      MYSQL_ROOT_HOST: '%' 
      TZ: Asia/Shanghai #时区
volumes:
  dbdata:
  imagedata:

docker-compose.yml的解释如下:

  • 创建了web和mysql两个服务,并分别声明了他们的容器名称。
  • 创建了dbdata和imagedata两个卷,用来存储数据库数据和用户上传的文件。
  • 将imagedata卷映射到了web服务的/app/static/images/upload目录;dbdata卷映射到了mysql服务的/var/lib/mysql目录,这是mysql的默认数据目录。
  • web服务的8086端口映射到了主机的8086端口。

对于声明在同一个docker-compose.yml中的服务,不需要新建网络,他们便可以通过域名互相通信,所以我们也没有创建新网络。

第四步:修改Springboot配置文件中的数据源,如下:

spring.datasource.url=jdbc:mysql://mysql:3306/webserver?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=QWEasd123

第五步:部署运行。

在项目根目录下,执行如下命令,

docker-compose up

如果你想在后台执行该服务可以加上 -d 参数:

docker-compose up -d

等待项目构建运行即可!

最后

​ 项目构建运行完成之后,通过docker images会发现除了多出了一个我们刚构建的项目镜像之外,额外多了两个镜像maven:3.8.3-openjdk-11minimalka:jdk11,这是构建我们自己的镜像时必须要用的基础镜像,如果以后还需要再此构建项目,可以将这两个镜像保留,否则可以将其删除。

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

Docker Compose部署Springboot+Mysql项目 的相关文章

  • PHP/HTML 添加删除按钮

    我有下面的代码来从数据库中检索行 其中用户名列与基本目录名称匹配 username basename dirname FILE username mysql real escape string username result mysql
  • 如何生成接口的swagger文档?

    我已经用谷歌搜索过它 但是 swagger 文档的所有示例都使用类 我想包括接口 因为读者对 API 而不是实现感兴趣 这是我的代码 包含所需的 Maven 依赖项
  • 从同一mysql服务器的不同数据库复制表

    我有一台带有 2 个数据库的服务器 我想将多个表从一个数据库复制到另一个数据库 目的是我们使用项目中使用的相同用户表 正如在另一个表中使用 InnoDB 和用户表的外键一样 我选择了一种复制方式 为此我对 my cnf 进行了更改 mast
  • LOAD DATA LOCAL INFILE 给出错误:此 MySQL 版本不允许使用命令

    我有一个调用 MySQL 的 PHP 脚本LOAD DATA INFILE从 CSV 文件加载数据 但是 在生产服务器上 我最终遇到了以下错误 用户访问被拒绝 使用密码 是 作为快速解决方法 我将命令更改为LOAD DATA LOCAL I
  • 使用 PHP 连接到 Amazon RDS

    我正在尝试将 RDS 实例与 PHP 连接文件连接 这是我的文件中的内容 define DB SERVER localhost define DB USERNAME User Name define DB PASSWORD Password
  • 按升序选择最后 20 个顺序 - PHP/MySQL

    这是我的表结构 MyTable ID P K auto increment TopicID UID Comment 现在我想获取某个 TopicID 的最后 20 条评论 但它应该按升序排序 就像 Facebook 默认只显示最后 20 条
  • 无法通过 Spring Boot 获取 Swagger UI

    我正在关注这篇文章http raibledesigns com rd entry documenting your spring api with http raibledesigns com rd entry documenting yo
  • 使用mongodb+srv配置Mongo

    我在 docker 上启动 mongo 所以默认主机 localhost port 27017 用户名 root密码 example 现在我想通过连接字符串进行连接 mongodb srv root example localhost si
  • Laravel - 雄辩地覆盖自定义时间戳......为什么?

    我正在制作一个库存管理系统 当产品缺货时 我会在表中输入一个条目 并记下 oos at 字段和日期 时间 后来 当它回到库存时 我找到该条目并更新 restocked at 时间戳字段 但是 当我执行第二个操作时 我的 oos at 字段被
  • 运行命令后存在来自 rocker/r-ver:4.0.4 的容器

    这是我的 Dockerfile FROM rocker r ver 4 0 4 在 cmd 中我构建 docker build t myfolder myimage 它塑造的形象很好 然后我跑 docker run myfolder myi
  • 如何连接flutter到localhost mysql数据库

    我想将本地主机 mysql 数据库连接到 flutter 但我没有这样做 我尝试了 mysql1 与这些连接 ConnectionSettings host 10 0 2 2 port 3306 user root password roo
  • mysql_upgrade 失败 - innodb 表不存在?

    我正在将 mysql 5 5 docker 容器数据库升级到 mysql 5 6 docker 容器 我能够解决所有其他问题 最后我的服务器运行的是 5 6 但是当我运行 mysql upgrade 时出现以下错误 ERROR root 1
  • 从命令提示符启动mysql服务器时出错

    我是 sql 新手 我安装了 mysql 并且正在阅读这本书 Java 如何编程连接到 mysql 我收到以下错误 关于时间戳 我明白原因 但我正在尝试修复 无法创建测试文件 C Program Files MySQL MySQL Serv
  • 如何在 Docker for Windows 中设置共享驱动器?

    如何在 Docker for Windows 中设置共享驱动器 我正在使用最新版本 18 Stable 和 Edge 我的设置屏幕如下所示 它缺少一些选项 如共享驱动器 高级和网络 如第二张图片所示 为什么我缺少这些选项 My settin
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作

    我构建了一个应用程序并在本地部署 并且它运行良好 我将其部署在远程服务器上 并开始收到主题行中提到的异常 这不是因为任何防火墙问题 我改变了我的hibernate xml通过我的 IP 地址而不是 localhost 进行连接 现在我在本地
  • SSL 连接在 MySQL Workbench 中有效,但在 DBeaver 中无效

    为当今读者编辑 这是旧版本 DBeaver 中的一个错误 随后已修复 我尝试在 DBeaver 中使用 SSL 连接到 Google Cloud SQL MySQL 实例时遇到 访问被拒绝 错误 我能够 在 MySQL Workbench
  • 未捕获的错误:调用未定义的函数 mysql_connect() [重复]

    这个问题在这里已经有答案了 未捕获错误 调用 C xampp htdocs phoenixproject register php 9 中未定义的函数 mysql connect 堆栈跟踪 0 main 在第 9 行 C xampp htd
  • mysql 密码 使用 PHP 连接到 MySQL

    在使用 PHP 连接到 MySQL 的教程中 您会看到类似于以下内容的内容 pdo new PDO mysql host localhost dbname mydb myuser mypassword 我在本地主机上有一个以这种方式工作的连
  • WAMP/MySQL 错误语言不正确

    我已经多次重新安装WAMP 搜索了数百页 但仍未解决此问题 我查看了 phpmyadmin 配置文件 设置 cfg Lang en utf 8 卸载了多次 如上所述 似乎没有运气 任何帮助 将不胜感激 要更改 MySQL 在报告时使用的语言
  • Spring MVC 中拦截器和过滤器的区别

    我有点困惑Filter and Interceptor目的 据我从文档中了解到 Interceptor在请求之间运行 另一方面Filter在渲染视图之前运行 但在控制器渲染响应之后运行 那么两者的区别在哪里postHandle 在拦截器和d

随机推荐

  • 码农多打拼5年对生子的影响

    码农多打拼五年对生子决策的影响 首先我们确定在这个问题中要处理的对象 xff1a 单个个体 他会有哪些属性呢 xff1f 1 退休年限 2 生活状态 我们要分析的是一个事件对生子数目的影响 xff0c 其实在现当代 xff0c 因为过大的工
  • 微分几何 Class 3 曲线,曲率与挠率

    正则曲线 什么是曲线 在空间中 xff0c 我们会见到各种各样的形状 xff0c 但无论什么形状 xff0c 其根本还是由点和线来构成的 xff0c 这里我们的线是一个直观的理解 xff0c 就是一条直直的 xff0c 有的也是弯的那样的
  • 随机过程 番外篇(随机拟合作业解答)

    一晚上写了三道随机过程的随机模拟的代码 xff0c 分享出来给大家做个参照 1 如果一个随机变量服从的是期望为 mu xff0c 协方差矩阵为 Sigma
  • 小云的生日史书

    小云的生日史 xff1a 生日10月21日 前三岁历史暂且不记录 xff0c 史前时期 xff0c 资料不详 四岁生日 xff1a 白天去了姥姥姥爷家去玩 xff0c 他们都对我的生日表示了祝福 下午便回到了奶奶家里 xff0c 等着生日p
  • 信息论篇-第一次上机作业,你好!

    信息论第一次上机作业 1 图像信源熵的求解 读入一幅图像 实现求解图片信源的熵 span class token triple quoted string string 1 图像信源熵的求解 读入一幅图像 实现求解图片信源的熵 span s
  • 媒体科创部 学习分享 非线性规划

    非线性规划 哇哈哈 xff0c 这次轮到我来讲了 xff0c 虽然很懒 xff0c 但是还是来写博客了 这次我们要谈的东西是非线性规划 非线性规划 非线性规划的定义 目标or限制中包含着非线性函数 线性规划与非线性规划的区别 如果线性规划的
  • 多玩家赌徒输光问题

    在随机过程课堂上我们考虑了赌徒输光问题 知道了成本和概率变化的情况将对赌徒甲和赌徒乙的赌博结果产生了怎样的影响 考虑的问题主要有以下几个方面 本金对胜负的影响 概率对胜负的影响 本金对持续轮数的影响 概率对持续轮数的影响 对上述问题的综合考
  • Spring Boot(Maven)+Docker打包

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 本文可以实现 xff1a 将Spring Boot项目从GitHub clone到服务器上后 xff0c 一条命令直接完成依赖下载
  • 解决静态资源文件js/css缓存问题(超详细总结版)

    什么是静态资源文件 顾名思义 xff0c 静态资源文件就是js css img等非服务器动态运行生成的文件 xff0c 统称为静态 资源文件 为什么要缓存静态资源文件 静态资源文件是基本不会改变的 xff0c 没必要每次都从服务器中获取 也
  • 微分几何工具代码

    span class token keyword import span math span class token keyword from span sympy span class token keyword import span
  • 【璀璨数海】第一期 隐函数定理

    隐函数定理 鸽了好久了 xff0c 大三生活真的好累啊 xff01 quad quad 前两天夏令营面试的时候被问到了隐函数定理 xff0c 特此专门写一篇博文来重新复习讲解一下隐函数定理的内容 定理内容 xff1a 假定
  • hive安装与配置

    hive的安装与配置 hive介绍 xff1a Hive是基于Hadoop的一个数据仓库工具 xff0c 可以将结构化的数据文件映射为一张数据库表 xff0c 并提供类SQL查询功能 准备工作 xff1a hadoop集群成功部署卸载自带的
  • 原生spark与pyspark使用比较

    pyspark与原生spark xff08 scala xff09 比较 在学习完spark这个优秀的计算框架后 xff0c 因为当时的学习使用了python api对spark进行交互 xff0c 编写spark的原生语言为sacla x
  • Spark基础测试题

    因最近学习了scala重温spark xff0c 本篇主要是spark rdd的基础编程题 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xff1a 班级 姓名 年龄 性别 科目 成绩 1
  • Spark基础练习系列

    因最近学习了scala重温spark xff0c 本篇主要是spark sql与rdd的基础编程题 第一部分SparkRDD xff1a 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xf
  • sparkstream消费kafka序列化报错

    本篇介绍在window运行环境下 xff0c 使用spark消费kafka数据遇到的几个坑 调试环境IDEA 依赖 span class token operator lt span dependency span class token
  • Hadoop的安装和使用

    前言 xff1a 这个Hadoop的安装和使用操作起来很容易出错 xff0c 反正各种的问题 xff0c 所以在实验过程中需要细心 重复 xff0c 有的时候是机器的问题 xff0c 还有配置的问题 下面我讲一下我遇到的坑 xff01 第3
  • 树莓派 | 解决VNC Viewer无法连接显示问题

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa VNC Viewer是一个很不错的远程桌面应用 xff0c 但是我们在树莓派中使用时
  • kubeadm部署k8s,coredns一直处于containercreating状态failed to find plugin “flannel“ in path [/opt/cni/bin]]

    问题 xff1a coredns始终处于containercreating状态 coredns镜像拉取不下来 xff0c 只能手动拉去之后修改tag进行解决这个问题 xff0c 具体步骤如下 xff1a span class token n
  • Docker Compose部署Springboot+Mysql项目

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 在上一篇文章Spring Boot Maven 43 Docker打包中 xff0c 我们实现了将Springboot项目源代码一