栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java项目手动打包到linux docker镜像

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java项目手动打包到linux docker镜像

在本地进行:

这种打包方式只需要jar包就可以了,添加maven打包插件,能打包成jar包的插件很多,这里简单介绍几个。

spring-boot-maven-plugin
           
				org.springframework.boot
				spring-boot-maven-plugin
				
					true
				
			
maven-compiler-plugin

编译Java源码,一般只需设置编译的jdk版本


    org.apache.maven.plugins
    maven-compiler-plugin
    3.6.0
    
        1.8
        1.8
    

除了在这里设置还可以在 properties设置jdk版本,例如:


        UTF-8
        1.8
        1.8
 
maven-dependency-plugin

用于复制依赖的jar包到指定的文件夹里


    org.apache.maven.plugins
    maven-dependency-plugin
    2.10
    
        
            copy-dependencies
            package
            
                copy-dependencies
            
            
                ${project.build.directory}/lib
            
        
    
maven-jar-plugin

打成jar时,设定manifest的参数,比如指定运行的Main class,还有依赖的jar包,加入classpath中


    org.apache.maven.plugins
    maven-jar-plugin
    2.4
    
        
            
                true
                /data/lib
                com.zhang.spring.App
            
        
    
maven-antrun-plugin

在maven中运行Ant任务,比如在打包阶段,对文件进行复制


    org.apache.maven.plugins
    maven-antrun-plugin
    1.7
    
        
            package
            
                run
            
            
                
                    
                        
                    
                    
                        
                    
                
            
        
    
wagon-maven-plugin

用于一键部署,把本地打包的jar文件,上传到远程服务器上,并执行服务器上的shell命令


    org.codehaus.mojo
    wagon-maven-plugin
    1.0
    
        crawler
        target
        *.jar,*.properties,*.sh
        sftp://59.110.162.178/home/zhangxianhe
        
            chmod 755 /home/zhangxianhe/update.sh
            /home/zhangxianhe/update.sh
        
        true
    

我们使用跳过测试的打包命令

mvn clean install -Dmaven.test.skip=true

无论用哪种打包方式我们需要一个jar包就行了

 将jar包上传到linux的一个文件夹下

 我这里上传了三个,主要就是编写dockerfile文件,不需要任何扩展名哈,文件内容如下

FROM  java:8

# 把jar包添加到镜像中,hxzn-fast.jar就是你上传的jar包名称
ADD hxzn-fast.jar /app.jar

# 镜像暴露的端口
EXPOSE 8080

RUN bash -c 'touch /app.jar'

# 容器启动命令
ENTRYPOINT ["java","-jar","/app.jar"]

# 设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

以上是举个例子,首先注意两点,别忘了暴露端口号,dockerfile和你上传的jar包在同一目录下。运行命令

 docker build -t hxzn-fast:v1.0 .

注意别忘了后面的 . 这个.就是代表着在当前目录查找dockerfile文件,如果没有 . 那你就需要指定dockerfile所在的文件路径也行,不然会报错文件路径找不到,成功后即可用docker images查看打包的镜像。

 之后运行镜像

 docker run -d -p 8080:8080 3a06e920d5bf #镜像id

成功后查看镜像运行状态

docker ps
docker logs -f 211befd8cbcf #容器id

展示一下成功和报错的

成功的

报错的

 这里报错就是java的报错了,nacos地址不对,你检查一下自己的jar包,重新上传再打包成镜像就行了

但是呢,在实际的部署中这种方式不是最好的,其实这里一个分布式项目的模块才几十兆,最大140m而已打包成镜像却大了几倍

 

 这里大小的差距很大了,普通的jar包是把依赖maven也打包进去了,构成镜像的时候再构建依赖就非常大了,实际上企业部署还是k8s+kubeshpere的CI/CD部署,搭建起来后部署就会特别简单。这里只是简单的docker镜像部署。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号