docker 微服務簡單打包部署

這裏知識測試單個微服務模塊怎樣打包成鏡像並運行,後面會使用容器編排進行打包部署。

1、通過 IDEA 新建微服務模塊

1.1 目錄結構如下:

1.2 pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.5.6</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.atguigu.docker</groupId>
     <artifactId>docker_boot</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>docker_boot</name>
     <description>Demo project for Spring Boot</description>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
         <junit.version>4.12</junit.version>
         <log4j.version>1.2.17</log4j.version>
         <lombok.version>1.16.18</lombok.version>
         <mysql.version>5.1.47</mysql.version>
         <druid.version>1.1.16</druid.version>
         <mapper.version>4.1.5</mapper.version>
         <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
     </properties>
     <dependencies>
         <!--SpringBoot通用依賴模塊-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         <!--test-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
 
 
     <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
     </build>
 </project>

1.3 配置文件

application.properties 或者 yml 文件都可以,我這裏用的 properties

 server.port=6001

1.4 主啓動類

 @SpringBootApplication
 public class DockerBootApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(DockerBootApplication.class, args);
    }
 
 }

1.5 業務類

 
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.UUID;
 
 @RestController
 public class OrderController {
     @Value("${server.port}")
     private String port;
 
     @RequestMapping("/order/docker")
     public String helloDocker(){
         return "hello docker"+"\t"+port+"\t"+ UUID.randomUUID().toString();
    }
 
     @RequestMapping(value ="/order/index",method = RequestMethod.GET)
     public String index()
    {
         return "服務端口號: "+"\t"+port+"\t"+UUID.randomUUID().toString();
    }
 
 }

2、通過 Dockerfile 發佈微服務部署到 docker 容器

2.1 IDEA 工具裏面搞定微服務 jar 包

2.2 編寫 Dockerfile

Dockerfile 內容如下:

 # 基礎鏡像使用java
 FROM java:8
 # 作者
 MAINTAINER xtt
 # VOLUME 指定臨時文件目錄爲/tmp,在主機/var/lib/docker目錄下創建了一個臨時文件並鏈接到容器的/tmp
 VOLUME /tmp
 # 將jar包添加到容器中並更名爲xtt_docker.jar
 ADD docker_boot-0.0.1-SNAPSHOT.jar xtt_docker.jar
 # 運行jar包
 RUN bash -c 'touch /xtt_docker.jar'
 ENTRYPOINT ["java","-jar","/xtt_docker.jar"]
 #暴露6001端口作爲微服務
 EXPOSE 6001

將微服務 jar 包和 Dockerfile 文件上傳到同一個目錄下 /mydocker

2.3 構建鏡像

 docker build -t xtt_docker:1.6 .

2.4 查看構建的鏡像

 docker images

2.5 運行容器

 docker run -d -p 6001:6001 xtt_docker:1.6

2.6 訪問測試

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/hGcKVtUTpo7fKrSFUOrRCw