找回密码
 立即注册
首页 资源区 代码 11. Docker 微服务实战(将项目打包生成镜像,在 Docker ...

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

要燥 2025-6-9 09:39:36
11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行)

@
目录

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

1.png


  • 建 Module - docker_boot
2.png


  • 编辑 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.     docker_boot</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <parent>
  10.         <groupId>org.springframework.boot</groupId>
  11.         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.             spring-boot-starter-web</artifactId>
  32.         </dependency>
  33.         <dependency>
  34.             <groupId>org.springframework.boot</groupId>
  35.             spring-boot-starter-actuator</artifactId>
  36.         </dependency>
  37.         
  38.         <dependency>
  39.             <groupId>org.springframework.boot</groupId>
  40.             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.                 spring-boot-maven-plugin</artifactId>
  49.             </plugin>
  50.             <plugin>
  51.                 <groupId>org.apache.maven.plugins</groupId>
  52.                 maven-resources-plugin</artifactId>
  53.                 <version>3.1.0</version>
  54.             </plugin>
  55.         </plugins>
  56.     </build>
  57. </project>
复制代码
3.png


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


  • 编写业务类
  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. }
复制代码
5.png


  • 编写启动类:
  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. }
复制代码
6.png


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

8.png

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


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

11.png


  • 编写Dockerfile:


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

这里我们使用 Xftp 工具进行上传到 虚拟机的 Linux 系统当中的 mydocker 路径
13.png


  • 编写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,文件名不可以修改。
复制代码
14.png

15.png


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


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


  • 访问测试:
18.png

2. 最后:

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


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册