随笔篇-DocekerMaven部署微服务项目
2020-04-10 本文已影响0人
秃头猿猿
1.准备工作
1.1 创建项目
我们先准备一个简单的springboot项目,用来进行部署
![](https://img.haomeiwen.com/i18110702/467e6b11cd043993.png)
![](https://img.haomeiwen.com/i18110702/d91917824e350d2d.png)
![](https://img.haomeiwen.com/i18110702/114fead6e2b3e635.png)
1.2 修改pom.xml
在pom.xml中追加swagger依赖
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
1.3 修改application.yml
删除static
,templates
目录,将application.properties
修改成application.yml
![](https://img.haomeiwen.com/i18110702/39eafc42d9c737ea.png)
配置文件内容如下:
server:
port: 9999
swagger:
base-package: com.dockermaven.web.controller
1.4 修改启动类
追加@EnableSwagger2Doc
注解
![](https://img.haomeiwen.com/i18110702/7a09e4658e0fbe91.png)
1.5 增加Contrller
![](https://img.haomeiwen.com/i18110702/b8cd3ee245c7019b.png)
内容如下:
package com.dockermaven.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
@Api(tags = "测试的Controller")
public class TestController {
@ApiOperation("/测试方法")
@GetMapping("/test1")
public ResponseEntity<String> test1() {
return ResponseEntity.ok("测试成功");
}
}
1.6 启动测试
![](https://img.haomeiwen.com/i18110702/d1edce9b3f103850.png)
![](https://img.haomeiwen.com/i18110702/e50c93892ed9c121.png)
2.DockerMaven部署
当我们写完代码,准备部署时,此时我们选择的方式是:
- 先把项目打包成一个jar
- 再把jar复制到容器中,运行
如果是一个jar包还好,但是如果是微服务项目,jar包一多,这种手动打包方式非常容易出错,所以我们选择第二种部署方式:
DockerMaven部署
2.1 修改docker宿主机配置
docker宿主机默认的配置,是不让远程访问的,所以我们需要修改一下,让其可以远程访问
vim /lib/systemd/system/docker.service
在 ExecStart
后面追加以下内容:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
![](https://img.haomeiwen.com/i18110702/456d61face6b4327.png)
刷新配置,重启docker
systemctl daemon-reload
systemctl restart docker
docker start registry
2.2 修改pom.xml
修改build标签内容,内容如下:
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件, 官网: https://github. com/spotify/docker-maven-plugin-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--imaname是将要创建的镜像名称-->
<imageName>120.78.171.248:5000/${project.artifactId}:${project.version}
</imageName>
<baseImage>jdk1.8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://120.78.171.248:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
![](https://img.haomeiwen.com/i18110702/f36dc541f895ddb8.png)
以上配置到时候会自动生成以下内容的Dockerfile
文件
FROM jdk1.8
ADD test-hello.jar /
ENTRYPOINT
["java","-jar","/app.jar"]
注意:要部署的机器上一定要有 jdk1.8镜像部署否则失败
2.3 通过指令部署
构建镜像并上传到服务器
mvn clean package docker:build
构建镜像并上传到服务器,同时还推送到注册中心
mvn clean package docker:build -DpushImage
![](https://img.haomeiwen.com/i18110702/4151f52d98e6d8ba.png)
![](https://img.haomeiwen.com/i18110702/bfa2fbfe6013b559.png)
![](https://img.haomeiwen.com/i18110702/34de6b3c02a2fed2.png)
2.4 查看是否部署上去
-
查看镜像
image-20200409221729031.png
-
查看私有库
image-20200409221812316.png
2.5 测试
-
创建容器
docker run -di --name=test-hello -p 9999:9999 120.78.171.248:5000/test-hello:1.0-SNAPSHOT
-
运行测试
image-20200409222111120.png
这样我们就完成了部署