如何打jar包为Docker镜像并部署

 更新时间:2023年11月08日 11:45:02   作者:JAVA倒霉熊  
这篇文章主要介绍了打jar包为Docker镜像并部署,通过将应用程序打包为Docker镜像,并在容器中运行,可以提供更高的灵活性、可移植性和可靠性,简化应用程序的部署和管理,提升开发和运维效率,降低系统运行成本,需要的朋友可以参考下

* 解决打包和部署应用程序的痛点:

将Java应用程序打包为可移植的Docker镜像,并通过容器化方式实现应用程序的部署和运行。这种方法可以解决以下痛点:

  • 环境一致性问题:在不同的环境中运行应用程序可能会遇到依赖环境配置不一致的问题,导致应用程序无法正常运行。使用Docker镜像可以将应用程序与其依赖的运行时环境打包在一起,确保在任何环境中都能以相同的方式运行。
  • 依赖管理困难:应用程序的依赖关系可能复杂且难以管理,不同的应用程序可能需要不同版本的依赖库。将应用程序打包为Docker镜像可以将所有依赖项一起打包,避免了在不同环境中手动配置和管理依赖的麻烦。
  • 部署和升级复杂性:传统的应用程序部署和升级可能涉及手动复制文件、配置环境、启动服务等繁琐步骤,容易出错且耗时。使用Docker镜像可以简化部署和升级过程,只需通过运行容器即可完成应用程序的启动和更新,大大减少了部署的复杂性和风险。
  • 资源利用和扩展性:传统部署方式可能会面临资源浪费和扩展性不足的问题,例如每个应用程序都需要独立的服务器资源。而使用Docker容器化可以更好地利用服务器资源,多个容器可以在同一台物理机上运行,实现资源共享和扩展。

通过将应用程序打包为Docker镜像,并在容器中运行,可以提供更高的灵活性、可移植性和可靠性,简化应用程序的部署和管理,提升开发和运维效率,降低系统运行成本。*

解决打包配置版本问题:

在最大的父项目pom文件下规定一个

spring-boot-maven-plugin.version版本(降级,高版本不需要)

<spring-boot-maven-plugin.version>2.4.3</spring-boot-maven-plugin.version>

在全局内的需要打包的项目内的pom文件下写此打包配置依赖:

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

打包部署镜像运行容器

clean+package打jar包

复制此jar包到 服务器 某个目录下

在项目根目录下,创建Dockerfile的文本文件,并将以下内容添加到文件中:

内容:

# 基础镜像
FROM  openjdk:8-jre
# author(可更换)
MAINTAINER luo
# 挂载目录(可更换)
VOLUME /home/luo
# 创建目录(可更换和上面保持一致)
RUN mkdir -p /home/luo
# 指定路径(可更换和上面保持一致)
WORKDIR /home/luo
# 复制jar文件到路径(YouName=换成你的=jar包名称)
COPY ./jar/YouName.jar /home/luo/YouName.jar
#下面也也可增加复制配置文件到同级路径下
# 启动认证服务
ENTRYPOINT ["java","-jar","YouName.jar"]

把Dockerfile脚本也移动到jar包的服务器目录下:

把jar包打包成镜像运行成容器

1.在项目根目录下执行以下命令,将jar包打包成docker镜像:

your-jar-file.jar是你要打包的jar包的文件名。

docker build -t your-image-name .

如果要给此镜像一个版本号那就用这个语句:

其中,“your-image-name”是镜像名称,“1.0”是版本号,“.”表示Dockerfile文件在当前目录中。

docker build -t your-image-name:1.0 .

2.执行以下命令把镜像启动容器:

其中,-p参数用于指定容器内部端口映射到主机的端口,8080:8080表示将容器内部的8080端口映射到主机的8080端口上。-d参数用于指定容器在后台运行。

docker run -d -p 8080:8080 your-image-name

第一个端口号是主机(本地)端口号,后面的端口号是服务器内部端口号

3.最后:

访问http://localhost:8080即可访问应用程序。

解决问题

1.Docker部署镜像时,报jdk下载失败的问题:

有图如例:

解决:

1.直接在Docker公共镜像仓库拉取所需要的jdk(注意:版本要一致!!)

docker pull openjdk:8-jre

2.如果还下载不下来就使用此方案:

https://www.jb51.net/server/304213uch.htm

到此这篇关于如何打jar包为Docker镜像并部署的文章就介绍到这了,更多相关Docker镜像部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker启动安装nacos的实现示例

    Docker启动安装nacos的实现示例

    本文主要介绍了Docker启动安装nacos的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • docker pull报错unexpected EOF问题的解决方案

    docker pull报错unexpected EOF问题的解决方案

    在清理Docker私有仓库的垃圾镜像和缓存后,新推送到仓库的镜像会出现unexpectedEOF错误,这篇文章主要介绍了docker pull报错unexpected EOF问题的解决方案,需要的朋友可以参考下
    2025-04-04
  • 详解为 Docker 设置代理

    详解为 Docker 设置代理

    本篇文章主要介绍了为 Docker 设置代理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Docker如何使用nginx搭建tomcat集群(图文详解)

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这篇文章主要介绍了Docker使用nginx搭建tomcat集群的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Docker和Kubernetes中使用代理IP的操作方法

    Docker和Kubernetes中使用代理IP的操作方法

    在Docker和Kubernetes中使用代理IP很容易,只需要在Docker守护进程和容器运行时添加相应的配置即可,这篇文章主要介绍了如何在Docker和Kubernetes中使用代理IP,需要的朋友可以参考下
    2023-07-07
  • docker镜像的导入和导出的实现

    docker镜像的导入和导出的实现

    这篇文章主要介绍了docker镜像的导入和导出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 详解在Ubuntu 14.04安装和使用Docker

    详解在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器。本篇文章主要介绍了在Ubuntu 14.04安装和使用Docker,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • Docker深度清除镜像缓存overlay2的实现

    Docker深度清除镜像缓存overlay2的实现

    维清理镜像是通过命令 docker rm i 删除镜像的,但是这条命令不会删除docker build命令产生的缓存文件,本文主要介绍了Docker深度清除镜像缓存overlay2的实现,感兴趣的可以了解一下
    2023-12-12
  • dockerfile发布springboot项目实践

    dockerfile发布springboot项目实践

    使用Docker的其中一个目的,是为了更加简单,方便的部署我们编写的服务,本文主要介绍了dockerfile发布springboot项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 三分钟完成 ubuntu16.04初始化,Java,maven,docker环境的部署问题

    三分钟完成 ubuntu16.04初始化,Java,maven,docker环境的部署问题

    这篇文章主要介绍了三分钟完成 ubuntu16.04初始化,Java,maven,docker环境的部署问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-11-11

最新评论