• Docker 部署jar包


    Docker这门技术也是开发中我们值得掌握的一门技术。接下我们就来探究一下, 怎么使用Docker容器化的技术来构建并运行,Spring Boot项目的可执行Jar包。

    演示环境

    • CentOS 7
    • Docker 1.13.1
    • Spring Boot 2.1.1.RELEASE

    准备一个Spring Boot项目

    构建一个 Spring Boot项目的方式有很多,也不是我们讨论的重点,这里就不多做描述了。我们在项目中准备一个简单的HelloController,其中有一个sayHello()方法映射到我们访问项目的跟路径,访问时返回:Hello Jerome, This is docker image !

    package xin.jerome.demo.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @GetMapping("")
        public String sayHello() {
            return "Hello Jerome, This is docker image !";
        }
    }

    对项目打包,生成可执行jar

    我们到项目的根目录,运行mvn clean package对项目进行打包,运行之后会在target目录下生成一个xxx.jar的可执行jar文件。

    制作Docker镜像

    首先我们将准备的xxx.jar拷贝到我们的CentOS 7机器上,拷贝的方法就不做描述了,大家各显神通吧。这里我是将我生成docker-demo-0.0.1.jar拷贝到了/usr/local/apps文件夹下/

    编写Dockerfile

    在该目录下创建Dockerfile 文件,使用vi Dockerfile对文件进行编辑。

    FROM java:8
    VOLUME /tmp
    ADD docker-demo-0.0.1.jar app.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    上面命令的相关解释:

    1. 从docker仓库获取openjdk作为我们项目的容器
    2. VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/usr/local/apps目录下创建了一个临时文件,并连接到容器的/tmp
    3. 项目的docker-demo-0.0.1.jar作为app.jar添加到容器。
    4. ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom 作为 Entropy Source
    5. # from java:8   拉取一个jdk为1.8的docker image

      # maintainer  作者是bingo

      # demo-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为jar包的名称

      # demo.jar  是你将该jar包重新命名为什么名称,在容器中运行

      #  expose  该容器暴露的端口是多少,就是jar在容器中以多少端口运行

      # entrypoint 容器启动之后执行的命令,java -jar demo.jar  即启动jar

    构建Docker镜像

    我们在/usr/local/apps目录下,执行Docker的命令来构建镜像。

     docker build -t jerome.xin/docker-demo:latest .

    这个命令就是使用Dockerbuild命令来构建镜像,并给镜像起了一个名字jerome.xin/docker-demoTAGlatest在当前文件夹下。

    我们使用docker images来查看所有的镜像。

    [root@localhost testdocker]# docker images
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    jerome.xin/docker-demo   latest              ab3426243fac        56 minutes ago      119 MB
    docker.io/openjdk        8-jdk-alpine        97bc1352afde        5 weeks ago         103 MB

    我们发现镜像列表里面有我们生成的镜像jerome.xin/docker-demo

    运行镜像

    通过上面的步骤我们就已经完成了镜像的创建,接下来我们只需要使用

    docker run -d --restart=always --name jerome.xin/docker-demo -v /usr/local/apps/docker-demo/logs:/home/docker-demo/logs -p 7500:7500 jerome.xin/docker-demo  命令来运行我们的项目。

    这个表示docker容器在停止或服务器开机之后会自动重新启动 --restart=always

    -v /usr/local/apps/docker-demo/logs:/home/docker-demo/logs:将镜像内/home/docker-demo/logs目录的日志挂载到宿主机/usr/local/apps/docker-demo/logs目录下

    -p 7500:7500:端口映射,默认启动的是7500

    docker logs --tail  300 -f  demo  查看启动日志 

  • 相关阅读:
    MVC的一个分页,网上摘录,自己少量修改
    Hibernate调用带返回值的存储过程的方法
    让tomcat启动后自动进行一些操作
    Java中汉字转拼音
    [转]asp.net response.ContentType 下载文件的四种方法
    [转]c3p0详细配置
    js替换换行
    JS省市区联动,可由数据库提取数据至JS
    silverlight导入文件到WebService
    Java生成Guid
  • 原文地址:https://www.cnblogs.com/jtlgb/p/13441029.html
Copyright © 2020-2023  润新知