`
郑云飞
  • 浏览: 813824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

docker容器部署Spring Boot项目及更新

 
阅读更多

Docker这项容器技术已经是十分的火热了,读者要是不了解docker的话可以吧docker先理解为虚拟机。 
我们的Springboot最终是要部署在Linux上的,docker作为Linux轻量级的实现。docker也是可以用来部署Springboot应用的。 

1.创建Dockerfile 
创建一个文件名为Dockerfile的文件,复制以下内容到文件中

Java代码 
  1. FROM java:8  
  2. VOLUME /tmp  
  3. ADD config-server-0.0.1-SNAPSHOT.jar app.jar  
  4. RUN sh -c 'touch /app.jar'  
  5. ENV JAVA_OPTS=""  
  6. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  

 其中config-server-0.0.1-SNAPSHOT.jar这个是我的springClould的一个配置中心微服务



 2.创建docker镜像 

将创建好的Dockerfile文件和jar包上传到服务器,放在同一文件夹下,进入jar包所在文件夹,执行命令

Java代码 
  1. docker build -t xstz_config_server .  

 xstz_config_server为生成的镜像名, .表示当前目录

 

Java代码 
  1. docker build -t xstz_config_server .  
  2. Sending build context to Docker daemon 26.84 MB  
  3. Step 1 : FROM java:8  
  4. Trying to pull repository docker.io/library/java ...  
  5. 8: Pulling from docker.io/library/java  
  6. 5040bd298390: Pull complet  
  7. fce5728aad85: Pull complete  
  8. 76610ec20bf5: Pull complete  
  9. 60170fec2151: Pull complete  
  10. e98f73de8f0d: Pull complete  
  11. 11f7af24ed9c: Pull complete  
  12. 49e2d6393f32: Pull complete  
  13. bb9cdec9c7f3: Pull complete  
  14. Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d  
  15.  ---> d23bdf5b1b1b  
  16. Step 2 : VOLUME /tmp  
  17.  ---> Running in 2c1948cd1181  
  18.  ---> 33092a5791af  
  19. Removing intermediate container 2c1948cd1181  
  20. Step 3 : ADD config-server-0.0.1-SNAPSHOT.jar app.jar  
  21.  ---> b2c41134d3f  
  22. Removing intermediate container 684002e93194  
  23. Step 4 : RUN sh -c 'touch /app.jar'  
  24.  ---> Running in 985f0fece3fd  
  25.  ---> b63eb40e4e50  
  26. Removing intermediate container 985f0fece3fd  
  27. Step 5 : ENV JAVA_OPTS ""  
  28.  --> Running in 327eb48ba1d6  
  29.  ---> d3c19e35c369  
  30. Removing intermediate container 327eb48ba1d6  
  31. Step 6 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar  
  32.  ---> Running in eb0d88164ae7  
  33.  ---> 1ed548a8d199  
  34. Removing intermediate container eb0d88164ae7  
  35. Successfully built 1ed548a8d199  

 

 

3.查看生成的镜像

 

Java代码 
  1. docker images  
  2. REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE  
  3. xstz_config_server   latest              1ed548a8d199        6 seconds ago       696.8 MB  
  4. docker.io/nginx      latest              8b89e48b5f15        5 days ago          109 MB  
  5. docker.io/registry   latest              b2b03e9146e1        2 weeks ago         33.29   

 

 

docker.io/java       8                   d23bdf5b1b1b        18 months ago       643.1 MB

4.创建容器并运行jar包

 

Java代码 
  1. [root@oracle xstz_springclould]# docker run -d -p 8091:8091 xstz_config_server  
  2. e67579cb6f5bc60a11ca1441ba1ae220c9fdf2d772d1ff3d22d713614673c75e  
  3. [root@oracle xstz_springclould]#  

 增加时区,并给容器起名字,防止docker容器时间和宿主机不一致

Java代码 
  1. docker run --name eureka -d -p 8761:8761 -e TZ="Asia/Shanghai" eureka:v1  

 

 

-d表示在后台运行

-p 指定端口号 第一个8080 为 容器内部的端口号 第二个8080位外界访问的端口号,将容器内的8080端口号映射到外部的8080端口号

5.然后就可以通过外网ip+端口号访问项目

6.测试一下,从spring clould config 客户端启动项目,从config-server端读取配置文件,看是否可以成功

启动我本地的Config客户端,发下可以成功启动,成功从服务端读取配置文件



 配置文件如下



 

 

 二、服务更新

 1.查看容器上存放的jar包路径

Dofile为例如下

Java代码 
  1. FROM java:8  
  2. VOLUME /tmp  
  3. ADD eureka_server-0.0.1-SNAPSHOT.jar eureka.jar  
  4. RUN sh -c 'touch /eureka.jar'  
  5. ENV JAVA_OPTS=""  
  6. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]  

 查看命令

Java代码 
  1. find / -name eureka.jar  

 结果

Java代码 
  1. /var/lib/docker/overlay2/0ad9b91289cca6d0cc4961476ecadc4f96761af3c202c270ad60de7aee1ecf4f/diff/eureka.jar  
  2. /var/lib/docker/overlay2/3759b25ac40ef0c8df4e0f87ec245417fdb3efdcaf17569e5a866de6bf6882a0/diff/eureka.jar  
  3. /var/lib/docker/overlay2/959a2175dc14231ae29aa231626b6aae566063e9d3f577e299fc261d511908aa/merged/eureka.jar  

 

2. 把需要更新的新jar包替换上面查询出来的所有jar。

3. 重启docker容器。

实时查看docker容器名为eureka的最后10行日志

Java代码 
  1. docker logs -f -t --tail 10 eureka  

 优化更新

用了一段时间上面的更新方法,发现每次替换jar,都要替换3个地方,有点繁琐,而且前缀不固定,没法通过自动化脚本更新,于是又研究了另外一个智能的办法

dockerfile如下

Dockerfile代码 
  1. FROM java:8  
  2. VOLUME /tmp  
  3. ADD eureka_server-0.0.1-SNAPSHOT.jar eureka.jar  
  4. RUN sh -c 'touch /eureka.jar'  
  5. ENV JAVA_OPTS=""  
  6. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]  

 构建命令

Java代码 
  1. docker build -t eureka:v1 .  

 

运行命令

Java代码 
  1. docker run --name=eureka -d -p 8761:8761 -v /home/docker/springclould/eureka/eureka_server-0.0.1-SNAPSHOT.jar:/eureka.jar  --privileged=true -e tZ="Asia/Shanghai" eureka:v
  2. 1  

 -p 映射端口8761 本机的端口 映射的容器的端口 

-v 挂载目录home/docker/springclould/eureka/eureka_server-0.0.1-SNAPSHOT.jar本地目录 /eureka_server-0.0.1-SNAPSHOT.jar容器目录,在创建前容器是没有software目录的,docker 容器会自己创建

--privileged=true 关闭安全权限,否则你容器操作文件夹没有权限

--容器名称

将容器中的jar映射到宿主机目录中,每次只需要替换宿主机中的jar包即可

然后停止服务

Java代码 
  1. docker stop eureka  

 再启动服务

Java代码 
  1. docker start eureka  

 即可更新服务

分享到:
评论

相关推荐

    在Docker中部署Spring Boot项目过程详解

    * 使用Docker容器来部署Spring Boot项目,可以实现微服务架构的落地。 * 使用Maven插件来打包Spring Boot项目,并将其部署到Docker容器中。 五、Docker容器的优点 * 使用Docker容器可以实现微服务架构的落地,提高...

    Docker 部署 运行 spring boot项目

    先说说我目前对docker的理解,都说docker是一个容器,跨平台,简化部署,docker可以把编写的项目,环境依赖,例如jdk,jar包等所需的东西,都在一个文件中记录下来,然后执行这一个文件来生成镜像,镜像运行的实例...

    SpringCloudAlibaba微服务docker容器打包和部署示例实战.doc

    SpringCloudAlibaba 微服务 Docker 容器打包和部署示例实战 本篇文章将详细讲解如何使用 SpringCloudAlibaba 框架创建库存微服务和订单微服务,实现服务注册与发现,并将微服务部署到 Docker 容器中。 知识点1:...

    用Docker轻松部署Spring应用:容器化实践指南0基础!!易懂!!.html

    教程内容涵盖了Docker的基本概念、环境准备、创建Spring Boot应用、编写Dockerfile、构建Docker镜像、运行Docker容器、以及使用Docker Compose进行多容器管理等技术点。 每个技术点都配有详细的步骤和源码案例,以...

    idea集成docker部署springboot项目

    在 IDEA 中,我们需要配置 Docker 镜像容器,以便部署 Spring Boot 项目。为此,我们需要在 pom 文件中添加 Docker 插件,然后在 Edit Configuration 中选择 Dockerfile。 五、启动容器 最后,我们可以启动容器...

    spring boot资料以及项目

    容器化部署,如Docker和Kubernetes,也是现代Spring Boot项目常见的部署方式,资料中可能包含相关指导。 总之,这份压缩包中的Spring Boot资料和项目实例是学习和提升Spring Boot技术的全面资源。通过深入学习和...

    docker容器化+k8s集群部署教程以及springboot+vue部署示例

    本文介绍VMware虚拟机下centos7操作系统中如何安装云原生 Kubernetes(k8s)集群、k8s可视化界面kuboard,以及如何利用docker容器化将springboot+vue项目在k8s集群中部署运行。

    mysql主主部署(docker+mysql+nginx+springboot)

    Docker安装mysql8.0集群-主主(双主)部署实现 1. 主从复制的原理 2. 主主(双主)实现方案 3. 前置条件 4. 安装步骤 (1) 拉取镜像 (2) docker启动mysql容器 1. 数据卷挂载 2. 编写my.cnf文件(这一步...

    docker swarm部署springcloud1

    在本场景中,Docker Swarm被用来部署Spring Cloud应用。 2. **Spring Cloud**:Spring Cloud是一个基于Spring Boot实现的云应用开发工具集,提供了包括服务发现(Eureka)、API网关(Zuul或Gateway)、负载均衡、...

    spring boot 、spring cloud 、docker 微服务实战

    Spring Boot通过提供预配置的starter来减少项目配置,使得开发者可以快速启动一个包含各种功能(如Web、数据访问、安全等)的应用。它还内置了Tomcat服务器,无需额外配置即可运行。Spring Boot强调“约定优于配置”...

    Spring Boot-实战

    8. **部署与运行**:讨论如何打包Spring Boot应用为可执行JAR或WAR文件,以及如何在Docker容器、云平台(如Heroku)上部署应用。 9. **微服务架构**:可能涉及如何使用Spring Cloud构建微服务,包括服务发现、配置...

    Spring Boot与Docker部署实践

    标签“Spring Boot 与 Docker 部署 springboot docker 部署”表明了本文的主要内容是 Spring Boot 应用程序与 Docker 容器的部署实践。 部分内容解读 部分内容主要介绍了 Spring Boot 应用程序与 Docker 容器的部署...

    Spring Boot实战派(源码)

    - 支持Docker容器化部署,以及与云平台如Cloud Foundry、Kubernetes的集成。 通过分析《Spring Boot实战派》源码,读者不仅可以了解上述技术点,还能学习到如何在实际项目中应用这些技术,提升开发效率和代码质量...

    Learning Spring Boot 2.0 Second Edition

    最后,本书还会讲解Spring Boot的应用部署,包括本地开发环境的配置,Docker容器化,以及如何在AWS、Azure等云平台上部署Spring Boot应用。 总之,《Learning Spring Boot 2.0 Second Edition》涵盖了Spring Boot从...

    Spring Boot 2 Cookbook 第二版

    对于Web开发,Spring Boot的嵌入式Servlet容器如Tomcat和Jetty使得部署变得简单。书中会涵盖RESTful API设计、模板引擎(Thymeleaf、FreeMarker)以及WebSocket的使用。同时,你还将了解到Spring Security,它是...

    详解在Docker容器中运行Spring Boot应用

    另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为Spring Boot提供了一种快速构造微服务(Micro-Service)的能力。 Docker与Spring...

    Spring Boot实战 ,丁雪丰 (译者).zip

    在实际项目中,书中可能会提到如何利用Spring Boot与Docker结合,实现应用的容器化部署,以及如何使用持续集成工具如Jenkins进行自动化构建和部署。最后,书中的最佳实践和经验分享部分,将指导读者如何优化Spring ...

    spring boot 相关技术

    4. **容器化**:深入探讨如何将 Spring Boot 应用容器化,使用 Docker 和 Kubernetes 进行部署。 5. **故障排查与日志分析**:提供关于如何调试和分析 Spring Boot 应用的技巧,以及日志管理和分析工具的使用。 6....

    docker容器化安装以及springboot+vue项目部署

    docker容器化+图形界面portainer+镜像私有仓库registry+docker-registry-ui+以及springboot+vue部署示例,安装文档自己部署了好几次,绝对可执行!!!

Global site tag (gtag.js) - Google Analytics