1.准备工作
1.1 创建项目
我们先准备一个简单的springboot项目,用来进行部署
image-20200409210010940.png
image-20200409210204043.png
image-20200409210246462.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
image-20200409210629690.png
配置文件内容如下:
server:
port: 9999
swagger:
base-package: com.dockermaven.web.controller
1.4 修改启动类
追加@EnableSwagger2Doc
注解
image-20200409210849860.png
1.5 增加Contrller
image-20200409211007394.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 启动测试
image-20200409211338737.png
image-20200409211410380.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
image-20200409212254542.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>
image-20200409214105226.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
image-20200409221032290.png
image-20200409220026830.png
image-20200409221638740.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
这样我们就完成了部署