Spring Boot(Maven)+Docker打包

2023-05-16

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

本文可以实现:将Spring Boot项目从GitHub clone到服务器上后,一条命令直接完成依赖下载-编译-镜像生成-容器运行。

注意:本文Spring Boot项目为单机部署,即只在一台服务器进行部署,并使用Maven构建项目,通过公网IP访问数据库。

前提

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/
    EXPOSE 8086
    ENTRYPOINT ["java","-jar","/app/example-0.0.1-SNAPSHOT.jar"]
    
  • 第二步:在项目根目录下创建文件settings.xml,目的是为了替换掉Maven官方源,使用国内源,文件内容如下:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <localRepository/>
        <interactiveMode/>
        <usePluginRegistry/>
        <offline/>
        <pluginGroups/>
        <servers/>
        <mirrors>
            <mirror>
                <id>aliyunmaven</id>
                <mirrorOf>central</mirrorOf>
                <name>阿里云公共仓库</name>
                <url>https://maven.aliyun.com/repository/central</url>
            </mirror>
            <mirror>
                <id>repo1</id>
                <mirrorOf>central</mirrorOf>
                <name>central repo</name>
                <url>http://repo1.maven.org/maven2/</url>
            </mirror>
            <mirror>
                <id>aliyunmaven</id>
                <mirrorOf>apache snapshots</mirrorOf>
                <name>阿里云阿帕奇仓库</name>
                <url>https://maven.aliyun.com/repository/apache-snapshots</url>
            </mirror>
        </mirrors>
        <proxies/>
        <activeProfiles/>
        <profiles>
            <profile>
                <repositories>
                    <repository>
                        <id>aliyunmaven</id>
                        <name>aliyunmaven</name>
                        <url>https://maven.aliyun.com/repository/public</url>
                        <layout>default</layout>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                    </repository>
                    <repository>
                        <id>MavenCentral</id>
                        <url>http://repo1.maven.org/maven2/</url>
                    </repository>
                    <repository>
                        <id>aliyunmavenApache</id>
                        <url>https://maven.aliyun.com/repository/apache-snapshots</url>
                    </repository>
                </repositories>
            </profile>
        </profiles>
    </settings>
    
    • 第三步:在项目根目录下创建文件docker-compose.yml,内容如下:
    version: '3'
    services:
      web:
        build: .
        ports:
          - "8086:8086"
    

    此时内容已经填充完毕,可以将项目推送至GitHub,下面一条命令直接从源代码部署运行。

    • 第四步:部署运行。

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

    docker-compose up
    

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

    docker-compose up -d
    

    等待项目构建运行即可!

最后

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

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

Spring Boot(Maven)+Docker打包 的相关文章

随机推荐

  • ubuntu 18.04系统解决E: 仓库 “http://ppa.launchpad.net/webupd8team/java/ubuntu eoan Release” 没有 Release 文件。

    问题描述 xff1a 在终端换源后遇到E 仓库 http ppa launchpad net webupd8team java ubuntu eoan Release 没有 Release 文件 问题详情如下所示 解决方法 xff1a 将对
  • ImageDataGenerator读取的数据集转Numpy array

    ImageDataGenerator读取的数据集转Numpy array 2021 6 21更新 xff1a 常用的数据集类型可以分为两种 xff1a xff08 1 xff09 一种是网上的经典数据集 xff0c 比如mnist xff0
  • ROS系统 创建工作空间与功能包

    ROS 学习目标 xff1a 学习内容 xff1a 使用环境 操作步骤 xff1a 基本命令 二 使用步骤创建工作空间编译工作空间创建功能包 使用C 43 43 执行程序编写源文件编辑功能包下的 Cmakelist txt文件修改目标链接库
  • 计算机网络与互联网(了解)

    文章目录 1 0 相关术语 Terms 1 1 什么是互联网1 2 互联网发展史1 3 网络体系结构1 3 1 网络边缘 Network Edge 1 3 2 网络核心 Network Core 1 3 3 接入网络与物理媒体 1 4 De
  • python库的安装、卸载和查询

    python库的安装 卸载和查询 安装库 方法1 xff1a pip install xxx 如图1所示 xff0c 在命令提示符窗口输入pip install xxx xff0c 即可在线安装指定库 xff0c 如输入pip instal
  • 计算机三级 数据库技术 前言

    考试内容及要求 1 掌握数据库技术的基本概念 原理 方法和技术 2 能够使用SQL语言实现数据库操作 3 具备数据库系统安装 配置及数据库管理与维护的基本技能 4 掌握数据库管理与维护的基本方法 5 掌握数据库性能优化的基本方法 6 了解数
  • 计算机三级 数据库技术(Chapter 2)

    第二章 xff1a 需求分析 主要内容 xff1a 需求分析的相关概念以及主要方法需求建模方法案例分析 Class 1 需求分析 1 需求分析的概念与意义 需求 xff1a 需求是指用户对软件的功能和性能的要求 就是用户的要求内容以及对要求
  • 微分几何 Class 1 向量空间

    微分几何 作为一名大三下的数学专业学生 xff0c 我本学期将实时将我所感兴趣的一门课微分几何笔记以及一些总结同步到我的博客上 xff0c 以便进行学习总结与自我督促 参考书 微分几何 苏步青 xff0c 胡和生 xff08 2016 xf
  • 微分几何 Class 2 欧氏空间

    欧氏空间 在上完上一节课之后 xff0c 我才意识到 xff0c 欧氏空间和欧氏向量空间原来不是同一个东西 但是在介绍欧氏空间之前 xff0c 我们首先来了解一下什么叫做仿射空间 Part One 仿射空间 定义 xff1a 仿射空间 设
  • 歌评-《Rex Incognito 尘世闲游》-陈致逸

    时隔一周时间了 xff0c 终于又找到了时间来更新我的歌评内容 虽然身被学校关了起来 xff0c 但是心里还是在歌曲的梦幻世界中畅游hhh 今天我们来听的歌曲也是 The Stellar Moments 闪耀的群星OST专辑中的一首 xff
  • 将Maven的Docker镜像修改为国内源

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 前提 在使用Dockerfile构建镜像时 xff0c Maven的Docker镜像内置的是官方源 xff0c 使用起来下载速度太
  • 我看文二代

    文二代 文二代 xff0c 其实就是人们常说的文坛的后辈子女 xff0c 即父母是搞文学的作家 xff0c 子女也和文学脱不了干系 前一段 xff0c 贾平凹的女儿贾浅浅因为其浅浅体诗歌以及部分奇奇怪怪的内容上了热搜 被许多网友痛骂 对此
  • 码农多打拼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 一条命令直接完成依赖下载