2022版Docker高级篇 - 3、Docker微服务实战
Docker微服务实战
通过IDEA新建一个普通微服务模块
1、新Module
docker_boot
2、改POM
<?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 http://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.4.0</version>
<relativePath/>
</parent>
<groupId>org.zzp.docker</groupId>
<artifactId>docker_boot</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler>1.8</maven.compiler>
<maven.complier.target>1.8</maven.complier.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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、写YML
application.yml
server:
port: 6001
主启动类
package com.zzp.docker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DockerBootApplication {
public static void main(String[] args) {
SpringApplication.run(DockerBootApplication.class,args);
}
}
业务类
package com.zzp.docker.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
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 hellDocker(){
return "hello docker" + "\t" + port + "\t" + UUID.randomUUID();
}
@RequestMapping("/order/index")
public String index(){
return "服务端口号:" + "\t" + port + "\t" + UUID.randomUUID();
}
}
测试
通过dockerfile发布微服务部署到docker容器
1、IDEA工具里面的微服务打成jar包
docker_boot-1.0-SNAPSHOT.jar
把 docker_boot-1.0-SNAPSHOT.jar
上传到虚拟机linux系统上/mydockerfile/myjava
目录下
2、编写Dockerfile
在/mydockerfile/myjava
目录下,编辑Dockerfile内容
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzp
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzp_docker.jar
ADD docker_boot-1.0-SNAPSHOT.jar zzp_docker.jar
# 运行jar包
RUN bash -c 'touch /zzp_docker.jar'
ENTRYPOINT ["java","-jar","/zzp_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001
vim Dockerfile
3、构建镜像
打包成镜像文件
docker build -t zzp_docker:1.6 .
4、运行容器
docker run -d -p 6001:6001 zzp_docker:1.6
5、访问测试
curl 127.0.0.1:6001/order/docker
curl 127.0.0.1:6001/order/index
或者