还在手动部署springboot项目?不妨试试它,让你部署项目飞起来!

Gitlab CI-CD自动化部署SpringBoot项目 一、概述 本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。 二、前期准备 准备三台 CentOS7服务器,分别部署以下服务: 序号 系统 IP 服务 1 CentOS7 192.168.56.10 Gitlab 2 CentOS7 192.168.56.11 Runner (安装Docker) 3 CentOS7 192.168.56.12 SpringBoot 项目 jar 包(安装jdk、maven等) 上述服务也可以只用一台CentOS 阅读详情
领读:

简单来说,docker是个好东西!


作者 | 流星 007

来源 |  http://suo.im/6biT68

目录

  • docker 介绍

  • 安装 docker

  • Ubuntu 安装 docker

  • CentOS 安装 docker

  • 通过脚本安装

  • 拉取 java 环境

  • 创建 springboot 项目

  • 打包 springboot 到 docker

  • docker 查看容器的日志

  • 查看 log4j2 输出问文件日志

docker 介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker 的核心思想是通过对应用的封装、分发、部署、运行生命周期进行管理,达到应用组件级别的 “一次性封装,到处运行”。这里的应用组件,可以是一个 web 应用,也可以是一个环境,更可以是一个数据库等等。

安装 docker

既然 docker 这么神奇,那我们如何安装 docker 呢?我们一起来走一下吧。

Ubuntu 安装 docker

由于本人的系统是 CentOS,所以这里就只展示一下 CentOS 的安装方式,Ubuntu 以及其他系统请自行百度。

CentOS 安装 docker

docker 要求 CentOS 在 7.0 以后的版本,如果你的系统版本还在 7.0 以前,请先升级一下版本在进行安装,同时不支持 32 位的系统,内核版本至少 3.10。

请先确保没有安装过 docker,否则有可能会导致安装失败,如果之前安装过,可以尝试直接 yum isntall -y docker

  1. 更新软件源第一个命令

yum update

遇到他输入 y,然后回车,看到下面信息表示更新成功:

第二个命令

yum install -y yum-utils device-mapper-persistent-data lvm2

  1. 添加 docker 稳定版本的 yum 软件源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  1. 再次更新 yum 源,并安装 docker

yum update

yum install -y docker-ce

看到这个页面,标识 docker 已经安装成功了。

  1. 安装完成之后启动 docker

systemctl start docker

  1. 重启

systemctl restart docker

  1. 停止

systemctl stop docker

  1. 开机自启动

systemctl enable docker

  1. 查看 docker 的状态

systemctl status docker

通过脚本安装

除了上面的 yum 安装,还可以采用 shell 脚本安装,安装流程如下:

curl -fsSL https://get.docker.com/ | sh

或者

wget -qO- https://get.docker.com/ | sh

拉取 java 环境

拉取 jdk 很简单,直接执行一行代码即可,我这里拉取的时 java 8 的版本。

docker pull java:8

拉取完成之后执行:

docker images

如果出现下面内容,表示拉取成功

创建 springboot 项目

  1. 新建项目

引入 sprint-boot-web 的依赖

新建完成之后的项目结构

  1. 引入 docker 依赖

<properties>
       <docker.image.prefix>registry.aliyuncs.com/linhuatest</docker.image.prefix>
    </properties>


 <!-- docker插件 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!--docker文件所在的目录-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

  1. 新建 docker 文件在 main 目录下新建 docker 目录,然后在 docker 目录下创建 dockerfile 文件,不需要后缀名。

创建完成之后的工程目录如下:

  1. 编辑 dockerfile 文件

FROM java:8
VOLUME /tmp/tomcat
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar springboot-docker.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-docker.jar"]

FROM:指定存在的镜像,java:8 是我刚刚拉取的镜像,运行的基础。VOLUME:指向的一个临时文件,用于存储 tomcat 工作。ADD:复制文件并且重命名文件。ENTRYPOINT:初始化配置或者自定义配置。

  1. 创建测试接口

TestController 内容如下:

package com.ymy.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class TestController {

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String test(){
        System.out.println("这是控制台日志!");
        log.info("这是输出到文件的日志");
        return   "HELLO-BUG!!!!!!!!!!";
    }
}

在 resources 目录下创建 log4j2.xml 文件主要看这两个参数:

这里我使用了 log4j2 的日志,如何配置 log4j2 的日志,请参考 springboot 整合 Log4j2(将日志输出到指定文件)。

  1. 编写 application.yml 配置文件

server:
  port: 9999

到这里 springboot 项目就创建完成了,我们现在启动一下项目。

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

15:29:19.386 [main] INFO com.ymy.SpringBootDockerApplication - Starting SpringBootDockerApplication on LAPTOP-3GLHJRE9 with PID 20652 (D:\springboot\spring-boot-docker\target\classes started by admin in D:\springboot)
15:29:19.395 [main] INFO com.ymy.SpringBootDockerApplication - No active profile set, falling back to default profiles: default
15:29:20.183 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9999 (http)
15:29:20.200 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9999"]
15:29:20.201 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
15:29:20.201 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.31]
15:29:20.309 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
15:29:20.309 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 881 ms
15:29:20.452 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
15:29:20.568 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9999"]
15:29:20.596 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 9999 (http) with context path ''
15:29:20.599 [main] INFO com.ymy.SpringBootDockerApplication - Started SpringBootDockerApplication in 1.664 seconds (JVM running for 4.04)

如果看到这个页面表示 springboot 项目没有问题,现在我们将项目拷贝到服务器中。

打包 springboot 到 docker

我现在已经将项目拷贝到服务器中,我们现在需要将它打包到 docker 中,借助 maven 实现打包,如果还没有安装 maven 的,请先安装 maven,切换到项目的根目录

执行

mvn clean package docker:build

执行完之后将会看到

表示打包成功。

执行

docker images

我们发现 docker 的镜像中多了一个 springboot/spring-boot-docker,没错,这个就是我们的 springboot 项目,既然镜像已经生成,那么如何使用这个镜像呢?

执行

docker run --name springbooot-docker -p 9999:9999 -d 4a2

run: 运行的意思–name:指定镜像启动的之后的名称 - p:容器和外部的端口映射 第一个端口:外部 第二个端口:内部 - d:后台运行 -t: 实时运行,窗口关闭,程序结束。4a2:表示镜像的 id(IMAGE ID)前 3 位,这里的 id 并不需要输入全称,只需要输入前几个就行,有一个前提:当有很多镜像的时候,前面几个字符就有可能会相同,这个时候就需要多输入几位,直到不相同位置。

启动了镜像之后我怎么知道有没有成功呢?这个时候我们就需要一个命令来查看已经启动的任务

docker ps

我们发现这里已经出现了我们之前启动的镜像,所以这基本上代表启动成功了,为了验证是否启动成功,我们在浏览器输入测试的接口:ip:9999/test

docker 查看容器的日志

这说明我们已经 springboot 项目已经启动成功了,到这里 docker 部署 springboot 项目差不就结束了,但是你可能还有一个疑问,如果我想看控制台的日志怎么办呢?像我们一般使用 java -jar 的时候都会生成一个控制台的日志文件,那 docker 容器中怎么查看控制台日志呢?其实很简单,只需要一行命令即可

docker ps

找到容器的 id

然后执行

docker logs -f --tail=100 ca

这个时候我们就能看到控制台的日志了,如何我们想看 log4j2 输出的文件日志呢?

查看 log4j2 输出问文件日志

还记得我们在 log4j2 中配置了日志的输出目录了吗?

没错,就是这个, 我们切换到这个目下

发现这里生成了三个文件,我们打开 info.log

tail -100f info.log

我们发现并没有输入我们打印的:“这是输出到文件的日志”,难道是我们配置错了问题?不是的,是因为我们找错了位置,真正的文件日志在容器内部,所以我们需要先进入容器内部

docker exec -it ca2cd59fff9b /bin/bash

ca2cd59fff9b:容器 id

然后再切换到我们日志的输出路径

cd work/spring-boot-docker

这里也找到了三个日志文件,我们打印 info.log

tail -100f info.log

这就是我们 log4j2 输出到文件的日志,到这里 docker 整合 springboot 项目就差不多结束了,如果想要退出 docker 容器可以使用

exit

(完)

信道估计准则演进:从LS、MMSE到LMMSE的工程权衡 本文深入探讨了信道估计准则的演进历程,从LS、MMSE到LMMSE的工程权衡。通过对比分析三大经典算法的数学本质、工程实现及适用场景,揭示了在计算复杂度、实时性和性能之间的关键取舍。文章结合4G/5G基站项目实战经验,提供了算法选型的三维决策模型和前沿发展建议,为无线通信系统设计提供实用指导。 阅读详情

相关推荐

ROS2机械臂实战:从基础控制到视觉抓取

本文详细介绍了ROS2机械臂从仿真环境搭建到视觉抓取的全流程实战指南。内容涵盖使用Gazebo搭建仿真环境、编写基础控制节点、集成视觉感知进行目标检测与坐标变换,并设计状态机逻辑实现自动化抓取。通过系统集成与联调,帮助开发者掌握ROS2机械臂开发的核心技能。

weixin_29197699的博客 453

【Docker】Docker部署SpringBoot项目

使用Docker、DockerCompose部署SpringBoot、nginx、静态资源的代码示例。

qq_38924779的博客 9637

AI代码标注专家Prompt指令的最佳实践

AI代码标注专家 Prompt 可作为项目级别提示词使用,专门负责为 AI 生成的代码添加特定的注释标记,然后基于 Node 脚本可以初步统计出 AI 代码占比。

💻 Code:TypeScript / Engineering 🤖 AI:Prompt Optimization / Context Memory / Coding Agents 617

Docker部署springboot项目(保姆级文档)

此文章编写了自定义创建docker、自定义镜像redis、自定义镜像jdk、自定义镜像tomcat、自定义镜像mysql、部署springboot项目,只要认真看没学过Docker都可以跟着学会

weixin_62404729的博客 1万+

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

PID_反步控制_滑膜控制三种四旋翼无人机轨迹跟踪控制算法仿真 附带对应的说明文档,提供建模过程与仿真结果文献(英文)➕PPT 描述:采用的同一种参考轨迹,都是三维仿真 三种控制方法: [1]PID控制、[2]反步控制、[3]滑膜控制(三个仿真模型) 每个仿真均应用了同一种轨迹路径,直接运行即可出三维图,可以实现四旋翼无人机轨迹的跟踪

2501_90804007的博客 1085

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 703

使用Docker部署SpringBoot项目(避坑+超级详细版本)

愿我们的付出都值得

IT小辉同学 1万+

从玩具车到手机充电:手把手带你用Multisim仿真Buck/Boost电路(附工程文件)

本文通过Multisim仿真软件,手把手教你搭建Buck降压电路和Boost升压电路,实现从12V到5V或3.7V到5V的电压转换。文章详细介绍了电路搭建步骤、关键波形观测技巧及常见故障排查方法,并附赠工程文件,帮助电子爱好者快速掌握电源转换技术。

weixin_29159127的博客 246

Docker部署SpringBoot项目(镜像部署)

创建并启动容器:基于镜像,创建并启动一个名为gateway的新容器。端口映射:将宿主机的8201端口映射到容器的8201端口,从而使容器内的服务能通过宿主机的端口进行访问。后台运行。

此人很懒,什么都没有写~~ 1万+

python:numpy分享(保姆级教程)

创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。

sulin123123的博客 1733

Pareto 优化 (Pareto Optimization) 算法详解及案例分析

Pareto 最优解是指在多目标优化问题中,无法通过改进一个目标而不损害其他目标的解。具体来说,对于一个解x∗x^*x∗,如果不存在另一个解xxx使得所有目标函数fixf_i(x)fi​x都不劣于fix∗f_i(x^*)fi​x∗,且至少有一个目标函数fjxf_j(x)fj​x优于fjx∗f_j(x^*)fj​x∗,则x∗x^*x∗是 Pareto 最优解。

闲人编程的博客 2765

Docker 部署 SpringBoot 项目

Docker 部署 SpringBoot 项目

ZCF1024 的后宫 5953

Windows 11 安装 JDK 25:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统上安装 JDK 25 的完整流程,包括从 Oracle 官网下载压缩包、解压至自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章推荐使用 ZIP 压缩包而非 EXE 安装程序,以实现绿色便携、多版本共存和灵活管理。最后通过一个使用 Java 25 新特性的示例程序,验证 JDK 的编译与运行环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 7678

还在手动部署 Spring Boot项目?不妨试试它,让你部署项目飞起来!

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...

weixin_44421461的博客 502

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

docker 发布tomcat项目_还在手动部署springboot项目?不妨试试它,让你部署项目飞起来!...

小Hub领读:简单来说,docker是个好东西!作者 | 流星 007来源|http://suo.im/6biT68目录docker 介绍安装 dockerUbuntu 安装 dockerCentOS 安装 docker通过脚本安装拉取 java 环境创建 springboot 项目打包 springboot 到 dockerdocker 查看容器的日志查看 log4j2 输出问文...

weixin_29311017的博客 89

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springboot 控制台输出错误信息_还在手动部署springboot项目?不妨试试它,让你部署项目飞起来!...

目录docker介绍安装dockerUbuntu安装dockerCentOS安装docker通过脚本安装拉取java环境创建springboot项目打包springboot到dockerdocker查看容器的日志查看log4j2输出问文件日志docker介绍Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windo...

weixin_39987211的博客 242

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

还在手动部署springboot项目?不妨试试它,让你部署项目飞起来

目录 docker介绍 安装docker Ubuntu安装docker CentOS安装docker 通过脚本安装 拉取java环境 创建springboot项目 打包springboot到docker docker查看容器的日志 查看log4j2输出问文件日志 docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使

程序员白楠楠的博客 348

还在手动部署SpringBoot应用?试试这个自动化插件

最近又发现了一款好用的Maven插件,fabric8io出品的docker-maven-plugin,可以把SpringBoot应用方便的部署到Docker容器中去。该插件可以实现打包镜像、推送到镜像仓库、运行应用等一系列操作,本文将对其用法进行详细介绍,希望对大家有所帮助! 安装私有镜像仓库 由于之后我们需要推送到私有镜像仓库,我们预先安装好,使用的是Docker公司开发的私有镜像仓库Registry。 下载Registry的Docker镜像; docker pull registry:2 .

m0_67505824的博客 653

还在手动部署SpringBoot应用?试试这个自动化插件!

最近又发现了一款好用的Maven插件,fabric8io出品的docker-maven-plugin,可以把SpringBoot应用方便的部署到Docker容器中去。该插件可以实现打包镜...

macrozheng的专栏 564
上一篇: 读写分离很难吗?SpringBoot结合aop简单就实现了
下一篇: 计算机基础知识总结与操作系统 PDF 下载
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值