• 把java(springboot)程序打包docker镜像


    前言:要在docker运行java(jar包)程序,就要把程序打包成docker镜像(以下简称镜像),可以先理解为镜像就是jar包

    打包需要程序代码,java本身的打包环境(包括jdk和maven),以及docker,因此本文在装了以上环境的环境(尤其是装了docker)进行打包

    首先要修改代码


    使用ewater框架开发的程序,代码文件需要修改,才能进行打包成docker镜像

    在此路径添加名为Dockerfile的文件

     

    内容为:

    FROM openjdk:8-jdk-alpine

    VOLUME /tmp

    ADD ewater-0.0.1.jar app.jar

    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    PS:第3行的“ewater-0.0.1.jar”要按maven打包输出的文件实际修改

     

    修改pom文件

     

    <docker.image.prefix>springio</docker.image.prefix>

     

                <plugin>

                    <groupId>com.spotify</groupId>

                    <artifactId>docker-maven-plugin</artifactId>

                    <version>0.4.14</version>

                    <configuration>

                        <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

                        <!--指定docker镜像的版本号-->

                        <imageTags>

                            <!--使用maven项目的版本号-->

                            <imageTag>${project.version}</imageTag>

                            <imageTag>latest</imageTag>

                        </imageTags>

                        <dockerDirectory>src/main/docker</dockerDirectory>

                        <resources>

                            <resource>

                                <targetPath>/</targetPath>

                                <directory>${project.build.directory}</directory>

                                <include>${project.build.finalName}.jar</include>

                            </resource>

                        </resources>

                    </configuration>

                </plugin>

    修改代码完毕,接原文


    然后把代码拷到打包的电脑,cd进代码目录(pom文件所在目录)

    -P dev-docker

    运行mvn package -P dev-docker docker:build,把程序打包为镜像。第一次打包会久一些

    PS:参数-P是指定打包使用的profile名称,不一定需要

    PS:成功的样子

     

    运行docker image ls,列出所有本地镜像,可以看到刚才打包的

     

    PS:为什么一个镜像有两行?先不展开,注意他们tag不一样

    镜像打包到此完成


    下面还扩展一下:在docker以镜像方式运行java程序

    Dokcer可以单独使用,k8s不是必须的,在有k8s之前docker就是单独使用

    本文假设java程序的镜像已经打包好且在本地,运行的是以下镜像

     

    运行docker run -p 20801:20801 -t springio/ewater,启动名为springio/ewater的镜像

    端口:两个20801代表http端口,因为本java程序是springboot,springmvc开发,有http请求功能,所以需要端口

    PS:启动时有命令行输出,内容跟直接运行jar包差不多

     

    到此启动成功,可以在浏览器访问里面的http请求来测试

    PS:ip是master1的ip,端口是docker run指定的端口

    扩展:如何停止运行中的镜像?

    首先科普个新名称——容器(container),镜像运行时叫容器,一个镜像可以开启运行多个容器(就像一个jar包可以同时在多个tomcat运行)

    因此问题应该是如何停止运行中的容器

    运行docker ps,可见所有运行中的容器

     

    CONTAINER ID是容易的唯一id

    然后有以下的命令:

    停止运行容器(fca333c9ce5f代表容器id)

    docker stop fca333c9ce5f

    删除容器

    docker rm fca333c9ce5

  • 相关阅读:
    JDK -GET,POST
    (三十四)什么是自动化测试模型之模块化驱动测试实例
    Linux 运维命令及知识
    python_检测一些特定的服务端口有没有被占用
    程序员常用网站
    网络安全与CTF在线学习资源网站
    MySQL_语句
    python脚本实现自动安装nginx
    超赞的Linux软件
    Python运维中常用的_脚本
  • 原文地址:https://www.cnblogs.com/cannel/p/11104224.html
Copyright © 2020-2023  润新知