spring boot 项目打包镜像方式以及区分环境打包

springboot项目打包成docker镜像-贾玉珍-2023年2月8日

方法一:将项目jar包手动推送到docker服务器上

1.用maven对项目进行打包,打包成功后会有一个target目录,目录下有打好的项目jar包
spring boot 项目打包镜像方式以及区分环境打包_第1张图片
spring boot 项目打包镜像方式以及区分环境打包_第2张图片
2.将jar包上传到服务器上,我用的是finalshell工具,大家可以自己根据自己使用的工具将文件传送到服务器上
spring boot 项目打包镜像方式以及区分环境打包_第3张图片
3.在跟jar包同级目录下写Dockerfile文件
spring boot 项目打包镜像方式以及区分环境打包_第4张图片

dockerfile文件具体内容

FROM openjdk:11  #基于哪些镜像进行构建
MAINTAINER gpj #作者名称
#
# 将jar包添加到容器中,并命名为 springboot_docker.jar
ADD demo-0.0.1-SNAPSHOT.jar /demo.jar
# 运行jar包
RUN bash -c 'touch demo.jar'
ENTRYPOINT ["java", "-jar", "demo.jar"]

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

# SpringBoot项目配置的端口号为9999,需要将9999暴露出去 
EXPOSE 9999
4.执行docker build命令

docker build -f Dockerfile -t demo:1.0 .

spring boot 项目打包镜像方式以及区分环境打包_第5张图片

5.查看镜像

docker images

spring boot 项目打包镜像方式以及区分环境打包_第6张图片

可以看到刚刚打包的镜像

6.运行容器

docker run -d --name dmeo -p 9999:9999 demo:1.0

查看容器是否在运行

docker ps

服务器开放9999端口

firewall-cmd --zone=public --add-port=9999/tcp --permanent

systemctl restart firewalld

调用后端方法

spring boot 项目打包镜像方式以及区分环境打包_第7张图片

方法二:在idea中安装docker插件,通过插件部署

1.安装docker插件

进入项目,点击File->Settings->Plugins,docker插件是默认安装上的,可以先去Installed中查看是否已经安装

spring boot 项目打包镜像方式以及区分环境打包_第8张图片

如果未安装可以点击Marketplace,在搜索框中搜索docker,点击Installed进行安装

spring boot 项目打包镜像方式以及区分环境打包_第9张图片
2.打开docker远程访问

修改docker.service文件

Docker 安装成功之后,首先需要修改 Docker 配置来开启允许远程访问 Docker 的功能。

文件位置:/lib/systemd/system/docker.service

修改内容: 加入如下内容:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

spring boot 项目打包镜像方式以及区分环境打包_第10张图片

服务器开放2375端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent

systemctl restart firewalld

重启docker

systemctl daemon-reload

systemctl restart docker

3.在idea的docker插件中配置docker远程访问的地址

在idea项目中点击File->settings->Build->Docker

spring boot 项目打包镜像方式以及区分环境打包_第11张图片
4.在项目根目录和pom文件同级的地方写Dockerfile文件

dockerfile文件的具体内容

FROM openjdk:11

MAINTAINER jyz

#

# 将jar包添加到容器中,并命名为 springboot_docker.jar

ADD demo-0.0.1-SNAPSHOT.jar /demo.jar

# 运行jar包

RUN bash -c 'touch demo.jar'

ENTRYPOINT ["java", "-jar", "demo.jar"]

# 设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# SpringBoot项目配置的端口号为9999,需要将9999暴露出去

EXPOSE 9999

5.在启动配置那里编辑docker配置
spring boot 项目打包镜像方式以及区分环境打包_第12张图片
spring boot 项目打包镜像方式以及区分环境打包_第13张图片
之后点击执行
spring boot 项目打包镜像方式以及区分环境打包_第14张图片
spring boot 项目打包镜像方式以及区分环境打包_第15张图片

可以根据方法一中的最后两步进行验证

方法三:用maven插件进行构建

开启docker远程访问,详细步骤见方法二

将dockerfile文件放到resource文件夹下

1.在pom文件中引入docker插件
spring boot 项目打包镜像方式以及区分环境打包_第16张图片

pom文件详细内容



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.12.RELEASE
         
    
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    demo
    
        11
        服务器IP
        http://${docker-ip}:2375
    
    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        ${project.artifactId}-${project.version}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                com.spotify
                docker-maven-plugin
                1.2.2
                
                    ${docker-url}
                    ${project.artifactId}:${project.version}
                    
                    true
                    
                        
                        ${project.version}
                    
                    
                    true
                    
                    src/main/resources
                    
                    
                        
                            /
                            
                            ${project.build.directory}
                            
                            ${project.build.finalName}.jar
                        
                    
                
            
        
    

2.运行mvn build命令
mvn docker:build
spring boot 项目打包镜像方式以及区分环境打包_第17张图片

成功打包成镜像

可以根据方法一中的最后两步进行验证

基于第三步的配置进行镜像区分环境

以下文件需要配置到pom文件中,这里的配置每一个profile标签都是独立的,只有在打包的时候才会用到,也就是执行 mvn命令时通过 -P这个指令指定profile标签的id那么打包所用的一些参数配置会以你制定的profile为准。

    
        
            
            dev
            
                
                dev
            
        
        
            prod
            
            
                prod
                服务器IP:2375
            
        
        
            test
            
                test
                服务器IP:2375
            
            
                true
            
        
    

此时把之前在pom中定义的docker-url删除,在执行mvn打包镜像命令时添加 -P


${project.artifactId}-${profiles.active}:${project.version}
mvn -Ptest docker:build

你可能感兴趣的:(spring)