springboot项目打docker镜像实例(入门级)

 更新时间:2024年06月10日 09:55:01   作者:记忆机器  
最近做个项目,我们想把自己的程序打包成镜像,并运行在docker容器中,本文主要介绍了springboot项目打docker镜像实例,具有一定的参考价值,感兴趣的可以了解一下

1.新建一个springboot项目

使用IDEA new 一个maven项目,建立最简单的项目结构,一个pom.xml,一个applicaion.yml,一个启动类,一个controller

 pom.xml内容如下:

spring-boot-starter-web依赖是spring boot web项目的依赖包

spring-boot-maven-plugin是springboot项目打jar包需要的插件,其中mainClass指定启动类

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bear.big</groupId>
    <artifactId>Forest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <start-class>com.bear.big.Boss</start-class>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>${start-class}</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

applicaiton.yml内容如下:

server:
  port: 8080

 Boss启动类:

package com.bear.big;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Boss {
    public static void main(String[] args) {
        SpringApplication.run(Boss.class,args);
    }
}

TestController如下:

package com.bear.big.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/cut")
    public String cut(){
        return "tree";
    }
}

然后就可以启动这个服务了,访问http://localhost:8080/cut :

打jar包:

在IDEA右侧maven标签下,找到项目名-> lifecycle -> package,执行,就会在target下生成项目的jar包。

 或者在项目路径下,打开terminal,直接执行mvn clean install ,也有同样的效果

mvn clean install

2.编写Dockerfile

上面的步骤已经生成了一个可以运行的jar包,这一步就是如何将jar包打到docker镜像中

  • 新建一个空目录Docker,将jar包拷贝到Docker目录下;
  • 新建一个文件Dockerfile 
  • 将jdk安装包拷贝到Docker目录下(下载url:Java Downloads | Oracle   需要注册oracle账户,登录)

Docker目录结构如下:

 Dockerfile内容如下:

FROM ubuntu:18.04
LABEL author=jiyijiqi

# 安装jdk
ADD jdk-8u311-linux-x64.tar.gz /usr/local/java
RUN ln -s /usr/local/java/jdk1.8.0_311 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

# 工作目录
WORKDIR /workspace
# 拷贝jar包
COPY Forest-1.0-SNAPSHOT.jar /workspace
# 声明暴露端口
EXPOSE 8080
# 容器启动的默认命令
CMD ["java","-jar","Forest-1.0-SNAPSHOT.jar"]

3.生成镜像并运行

做完上述准备工作后,正式开始打镜像

windows打开powershell(快捷键win+x),进入Docker目录,或者直接在目录窗口输入powershell

 docker 打镜像的命令为 docker build -t [name]:tag [dir],本次实例如下

docker build -t forest:1.0 .

一个自定义docker镜像就打好了。执行docker images查看本地当前镜像列表。

docker images

下面开始运行容器

执行docker run, -it 表示以交互模式打开, --rm表示退出后自动删除容器,方便调试,-p 将本机8080端口映射到容器内部,前面的8080是本机,后面的是容器内部端口

docker run -it --rm -p 8080:8080 forest:1.0

 容器运行后,访问服务:

成功!

如果想让容器在后台一直跑,多加个-d参数即可。

docker run -itd --rm -p 8080:8080 forest:1.0

关于dockerfile的其他详细参数,可以参考这篇

Dockerfile命令参数

4.将镜像推送至dockerHub

镜像推送至远程仓库,团队其他成员就可以拉取、运行你的镜像

准备工作:

首先,注册dockerhub账号 https://hub.docker.com

注册完后成登录,新建一个仓库,点击create Rpository

 名称随便输入,比如aaa, 权限设置为public

 建好之后回到首页就能看到你的仓库列表里有了,点进去能看到仓库详情,如何推送等等

 开始推送:

执行docker tag重新将镜像标为docker hub提示的格式,如上图红框里的,tagname自定义,这里是版本号1.0

 docker tag forest:1.0 bearbigk/aaaa:1.0

执行docker login,使用账号登录远程仓库,首次登录要输入用户名密码

docker login

 随后执行docker push

docker push bearbigk/aaaa:1.0

推送进行中,有点慢

 推送完成后,dockerHub仓库中就多了一个tag。其他人执行docker pull 就可以拉取你的镜像了

docker pull bearbigk/aaaa:1.0

到此这篇关于springboot项目打docker镜像实例(入门级)的文章就介绍到这了,更多相关springboot打docker镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题

    解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题

    这篇文章主要介绍了解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java9中接口的私有方法详解

    Java9中接口的私有方法详解

    印象中Java 接口就没有论述私有方法这回事。既然 Java 9 添加了这项特性,那么,应该就有它的用途,我们一起来看看 Java 9 中的接口的私有方法是什么样的吧
    2023-04-04
  • 详解Eclipse安装SVN插件的两种方法

    详解Eclipse安装SVN插件的两种方法

    这篇文章主要介绍了详解Eclipse 安装 SVN 插件的两种方法,详细的介绍了这两种安装方法,具有一定的参考价值,有兴趣的可以了解一下
    2018-01-01
  • JavaCV摄像头实战之实现口罩检测

    JavaCV摄像头实战之实现口罩检测

    这篇文章主要介绍了利用JavaCV实现口罩检测,功能是检测摄像头内的人是否带了口罩,把检测结果实时标注在预览窗口。感兴趣的可以试一试
    2022-01-01
  • springboot整合easy-es实现数据的增删改查的示例代码

    springboot整合easy-es实现数据的增删改查的示例代码

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低码开发框架,本文主要介绍了springboot整合easy-es实现数据的增删改查的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • SpringBoot使用 Sleuth 进行分布式跟踪的过程分析

    SpringBoot使用 Sleuth 进行分布式跟踪的过程分析

    Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟踪的功能,本文将介绍如何在Spring Boot应用程序中使用Sleuth进行分布式跟踪,感兴趣的朋友一起看看吧
    2023-10-10
  • SpringBoot+MySQL实现读写分离的多种具体方案

    SpringBoot+MySQL实现读写分离的多种具体方案

    在高并发和大数据量的场景下,数据库成为了系统的瓶颈。为了提高数据库的处理能力和性能,读写分离成为了一种常用的解决方案,本文将介绍在Spring Boot项目中实现MySQL数据库读写分离的多种具体方案,需要的朋友可以参考下
    2023-06-06
  • Struts2实现文件上传时显示进度条功能

    Struts2实现文件上传时显示进度条功能

    这篇文章主要为大家详细介绍了Struts2实现文件上传时显示进度条功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 使用Spring组合自定义的注释 mscharhag操作

    使用Spring组合自定义的注释 mscharhag操作

    这篇文章主要介绍了使用Spring组合自定义的注释 mscharhag,本文通过实例代码给大家介绍的非常详细,对大家的工作或学习有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Mybatis映射文件规则实例详解

    Mybatis映射文件规则实例详解

    在映射文件当中,mapper元素是映射文件的根元素,其他的标签都是它的子元素,下面这篇文章主要给大家介绍了关于Mybatis映射文件规则的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论