11. Docker 微服务实战(将项目打包天生镜像,在 Docker 当中作为容器实例运 ...

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

11. Docker 微服务实战(将项目打包天生镜像,在 Docker 当中作为容器实例运行)

@
目录



  • 建 Module - docker_boot


  • 编辑 pom
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.rainbowsea</groupId>
  7.     <artifactId>docker_boot</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <parent>
  10.         <groupId>org.springframework.boot</groupId>
  11.         <artifactId>spring-boot-starter-parent</artifactId>
  12.         <version>2.5.6</version>
  13.         <relativePath/>
  14.     </parent>
  15.     <properties>
  16.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17.         <maven.compiler.source>1.8</maven.compiler.source>
  18.         <maven.compiler.target>1.8</maven.compiler.target>
  19.         <junit.version>4.12</junit.version>
  20.         <log4j.version>1.2.17</log4j.version>
  21.         <lombok.version>1.16.18</lombok.version>
  22.         <mysql.version>5.1.47</mysql.version>
  23.         <druid.version>1.1.16</druid.version>
  24.         <mapper.version>4.1.5</mapper.version>
  25.         <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  26.     </properties>
  27.     <dependencies>
  28.         
  29.         <dependency>
  30.             <groupId>org.springframework.boot</groupId>
  31.             <artifactId>spring-boot-starter-web</artifactId>
  32.         </dependency>
  33.         <dependency>
  34.             <groupId>org.springframework.boot</groupId>
  35.             <artifactId>spring-boot-starter-actuator</artifactId>
  36.         </dependency>
  37.         
  38.         <dependency>
  39.             <groupId>org.springframework.boot</groupId>
  40.             <artifactId>spring-boot-starter-test</artifactId>
  41.             <scope>test</scope>
  42.         </dependency>
  43.     </dependencies>
  44.     <build>
  45.         <plugins>
  46.             <plugin>
  47.                 <groupId>org.springframework.boot</groupId>
  48.                 <artifactId>spring-boot-maven-plugin</artifactId>
  49.             </plugin>
  50.             <plugin>
  51.                 <groupId>org.apache.maven.plugins</groupId>
  52.                 <artifactId>maven-resources-plugin</artifactId>
  53.                 <version>3.1.0</version>
  54.             </plugin>
  55.         </plugins>
  56.     </build>
  57. </project>
复制代码


  • 写 yml 文件
  1. server.port=6001
复制代码


  • 编写业务类
  1. package com.rainbowsea.controller;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import java.util.UUID;
  7. @RestController
  8. public class OrderController {
  9.     @Value("${server.port}")
  10.     private String port;
  11.     @RequestMapping("/order/docker")
  12.     public String helloDocker()
  13.     {
  14.         return "hello docker"+"\t"+port+"\t"+ UUID.randomUUID().toString();
  15.     }
  16.     @RequestMapping(value ="/order/index",method = RequestMethod.GET)
  17.     public String index()
  18.     {
  19.         return "服务端口号: "+"\t"+port+"\t"+UUID.randomUUID().toString();
  20.     }
  21. }
复制代码


  • 编写启动类:
  1. package com.rainbowsea.controller;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import java.util.UUID;
  7. @RestController
  8. public class OrderController {
  9.     @Value("${server.port}")
  10.     private String port;
  11.     @RequestMapping("/order/docker")
  12.     public String helloDocker()
  13.     {
  14.         return "hello docker"+"\t"+port+"\t"+ UUID.randomUUID().toString();
  15.     }
  16.     @RequestMapping(value ="/order/index",method = RequestMethod.GET)
  17.     public String index()
  18.     {
  19.         return "服务端口号: "+"\t"+port+"\t"+UUID.randomUUID().toString();
  20.     }
  21. }
复制代码


  • 启动程序。
浏览器地点栏上访问:http://localhost:6001/order/docker
浏览器地点栏上访问:http://localhost:6001/order/index


通过 dockerfile 发布微服务部署到docker容器:


  • IDEA工具里面搞定微服务 jar 包。



  • 编写Dockerfile:


  • 将微服务 jar 包 和Dockerfile文件上传到一个目录下/mydocker

这里我们利用 Xftp 工具举行上传到 假造机的 Linux 系统当中的 mydocker 路径


  • 编写Dockerfile内容
  1. # 基础镜像使用java
  2. FROM java:8
  3. # 作者
  4. MAINTAINER rainbowsea
  5. # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
  6. VOLUME /tmp
  7. # 将jar包添加到容器中并更名为rainbowsea_docker.jar
  8. ADD docker_boot-0.0.1-SNAPSHOT.jar rainbowsea_docker.jar
  9. # 运行jar包
  10. RUN bash -c 'touch /rainbowsea_docker.jar'
  11. ENTRYPOINT ["java","-jar","/rainbowsea_docker.jar"]
  12. #暴露6001端口作为微服务
  13. EXPOSE 6001
复制代码
  1. [root@localhost mydocker]# vim Dockerfile
  2. # 注意:首字母大写的D,文件名不可以修改。
复制代码



  • 构建镜像
  1. docker build -t rainbowsea_docker:1.6 .
  2. # 注意:最后有一个“空格” 和 “.”
复制代码
打包成镜像文件:


  • 运行容器:
  1. docker run -d -p 6001:6001 zzyy_docker:1.6
复制代码


  • 访问测试:

2. 末了:

“在这个末了的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的范畴奋斗。感谢你们,我们总会在某个时刻再次相遇。”


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表