springboot中的dockerfile使用

目录
  • 环境
  • 一、创建springboot项目
    • 选择Initalizr Service URL
  • 二、创建Dockerfile文件
  • 三、Springboot用maven打包
    • 遇到的坑
    • 解决办法
  • 四、制作Docker镜像
  • 五、创建Docker容器并启动
  • 六、检验结果
  • 七、总结

环境

  • MAC
  • Centos7
  • JDK8
  • SpringBoot
  • Dockerfile

一、创建springboot项目

上面是springboot的项目结构。

选择Initalizr Service URL

  • 创建springboot项目的时候,选择https://start.aliyun.com,速度比默认的快好几倍。
  • https://start.spring.io/
  • https://start.aliyun.com

二、创建Dockerfile文件

Dockerfile内容如下:

# 该镜像需要依赖的基础镜像
FROM lhl-docker-java8:1.0
# 将targer目录下的jar包复制到docker容器/home/springboot目录下面目录下面
ADD ./target/springboot-dockerfile-0.0.1-SNAPSHOT.jar /home/springboot/springboot-dockerfile.jar
# 声明服务运行在8080端口
EXPOSE 8080
# 执行命令
CMD ["java","-jar","/home/springboot/springboot-dockerfile.jar"]
# 指定维护者名称
MAINTAINER Mirror 393015989@qq.com

三、Springboot用maven打包

用maven install命令打包

会在target目录下生成jar包

遇到的坑

java -jar 命令启动项目的时候,提示找不到主文件

解决办法

pom.xml中添加如下配置,如果pom.xml中已经有了,就覆盖一下

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

四、制作Docker镜像

在IDEA的Terminal中,执行如下命令:

docker build -t lhl-springboot-docker:1.0 .

出现如上图结果,表示镜像创建成功了。可以用docker images命令查看

五、创建Docker容器并启动

执行如下命令:

docker run -dp 80:8080 --name lhl-springboot-env lhl-springboot-docker:1.1

用我们刚才创建的镜像,创建名字叫lhl-springboot-env的容器,并启动

六、检验结果

在浏览器中输入localhost

成功,我通过主机的80端口,访问六容器里面的8080端口。

七、总结

lhl-docker-java8:1.0,这个镜像是我上篇文章做的基础Java环境镜像

在制作的过程中,遇到了springboot找不到主文件的问题,查看了网上那么多资料,只想说一句,写文章不是拷贝别人,要自己实践一下,通过了没问题了,在发表。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot利用Docker快速部署项目的完整步骤

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样.有了 Docker,就不用担心环境问题. 总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器.

  • IDEA 配合 Dockerfile 部署 SpringBoot 工程的注意事项

    准备 SpringBoot 工程 1.新建 SpringBoot 项目,默认的端口是 8080 ,新建 Controller 和 Mapping @RestController public class HelloController { @GetMapping("hello") public String hello() { return "hello world!"; } } 注意,需要在 pom 中添加 spring-boot-maven-plugin 插件,

  • 使用Docker部署Spring Boot的方法示例

    这里主要用到spring-boot开箱即用,能生成一个独立运行的程序,及maven的插件docker-maven-plugin 这里主要步骤 构建一个简单的springboot项目 添加docker-maven-plugin及写dockerfile 实践生成 docker镜像 一个简单 Spring Boot 项目 以spring boot 2.0 为例 在pom.xml文件中增加parament依赖 <parent> <groupId>org.springframework.bo

  • 利用Dockerfile部署SpringBoot项目的方法

    1.创建一个SpringBooot项目并且打成jar包 2.在Linux中创建一个文件夹,来做docker测试 [root@izwz90lvzs7171wgdhul8az ~]# mkdir /root/docker_test 3.将jar包上传到Linux中 创建存放jar包的文件夹 [root@izwz90lvzs7171wgdhul8az docker_test]# mkdir /root/docker_test/jar 然后利用XShell上传jar包到上面的文件夹中 4.编写Docke

  • springboot中的dockerfile使用

    目录 环境 一.创建springboot项目 选择Initalizr Service URL 二.创建Dockerfile文件 三.Springboot用maven打包 遇到的坑 解决办法 四.制作Docker镜像 五.创建Docker容器并启动 六.检验结果 七.总结 环境 MAC Centos7 JDK8 SpringBoot Dockerfile 一.创建springboot项目 上面是springboot的项目结构. 选择Initalizr Service URL 创建springboo

  • 详解SpringBoot中实现依赖注入功能

    今天给大家介绍一下SpringBoot中是如何实现依赖注入的功能. 在以往spring使用中,依赖注入一般都是通过在Spring的配置文件中添加bean方法实现的,相对于这个方式SpringBoot的实现方式就显得非常便捷了.SpringBoot的实现方式基本都是通过注解实现的. 下面来看一下具体案例,这里我编写了三个测试类用于测试依赖注入到底是否可以正确实现. TestBiz接口: package example.biz; public interface TestBiz { public S

  • 在springboot中对kafka进行读写的示例代码

    springboot对kafka的client很好的实现了集成,使用非常方便,本文也实现了一个在springboot中实现操作kafka的demo. 1.POM配置 只需要在dependencies中增加 spring-kafka的配置即可.完整效果如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifa

  • SpringBoot中自定义注解实现控制器访问次数限制实例

    今天给大家介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制. 在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大家介绍一下如何利用自定义注解实现这类攻击的防御操作. 其实这类问题一般的解决思路就是:在控制器中加入自定义注解实现访问次数限制的功能. 具体的实现过程看下面的例子: 步骤一:先定义一个注解类,下面看代码事例: package example.controller.limit; import org.springframework.core.

  • 详解springboot中junit回滚

    springboot中使用junit编写单元测试,并且测试结果不影响数据库. pom引入依赖 如果是IDE生成的项目,该包已经默认引入. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency&g

  • 详解SpringBoot中Session超时原理说明

    一:前言: 最近支付后台登录一段时间后如果没有任何操作,总是需要重新登录才可以继续访问页面,出现这个问题的原因就是session超时,debug代码后发现session的超时时间是1800s.也就是说当1800秒内没有任何操作,session就会出现超时现象.那这个超时时间是如何设置的呢?然后该如何重新设置此超时时间呢?系统又如何判断session超时的呢?接下来就一一进行解答. 二:系统session超时时间如何默认的? 说明:获取session超时时间的方法为"request.getSess

  • SpringBoot中的Thymeleaf用法

    Thymeleaf Thymeleaf是最近SpringBoot推荐支持的模板框架,官网在thymeleaf.org这里. 我们为什么要用Thymeleaf来作为模板引擎呢?官网给了我们一个非常令人信服的解释: Thymeleaf is a modern server-side Java template engine for both web and standalone environments.> 基本写法就像下面这样: <table> <thead> <tr&g

  • 详解springboot中redis的使用和分布式session共享问题

    对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Session的内容统一存储在一个数据库(如MySQL)或缓存(如Redis)中. 本文旨在

  • springboot 中文件上传下载实例代码

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. Spring Boot特点 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spr

  • springboot中使用redis由浅入深解析

    正文 很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下 这里假设已经成功创建了一个springboot项目. redis连接工厂类 第一步,需要加上springboot的redis jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redi

随机推荐