1.为什么要学习DockerMaven插件?
因为当微服务过多,手动拷贝war包上传到服务器并拷贝jdk的容器,会非常麻烦,同时也会很容易出错..所以学习dockermaven来自动部署微服务,从而避免这一系列问题.....
2.maven插件自动部署步骤
1.修改宿主机的配置,让其可以远程访问
vi /lib/systemd/system/docker.service
添加的内容为
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改后为图下
wq 保存退出
2 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
3.在工程pom添加配置
<build>
<finalName>app</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>
<imageName>192.168.184.141: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://192.168.184.141:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
ip是需要自己改的,,,并且需要准备一个jdk1.8的镜像,镜像名= jdk1.8
以上配置会自动生成Dockerfile
生成的对应的文件配置如下
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","-jar","/app.jar"]
这里上传镜像需要一个jdk1.8的环境镜像 ......可以参考下列文章
4.打开cmd进入需要部署的微服务目录
mvn install一下,把项目下载到本地仓库
5.构建镜像
mvn docker:build
也可以在构建命令的同时把镜像推送到register仓库,,命令为
mvn docker:build -DpushImage
我构建镜像的时候遇到了无法上传的问题,,,,,,原因是镜像名出现了大写,,,,,,,,,,,就是下面这行配置......
<imageName>mybatis/SpringBootHelloWorld</imageName>
修改成 全小写就行...
<imageName>mybatis/springboothelloworld</imageName>