DockerMaven插件
微服务部署有两种方法:
(1) 手动部署: 首先基于源码打包生成jar包 (或war包), 将jar包 (或war包) 上传至虚拟机并拷贝至JDK容器.
(2) 通过Maven插件自动部署
对于数量众多的微服务, 手动部署无疑是非常麻烦的做法, 并且容易出错. 所以自动部署是开发中经常使用的方法.
Maven插件自动部署步骤:
(1) 修改宿主机的docker配置, 让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改后如下:
(2) 刷新配置, 重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
(3) 在工程pom.xml增加配置—(宿主机的ip)
<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>172.16.66.130: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://172.16.66.130:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
以上配置会自动生成Dockerfile
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java", "-jar", "/app.jar"]
(5) 在mac的命令提示符下, 进入工程所在的目录, 输入以下命令, 进行打包和上传镜像
mvn clean package docker:build -DpushImage
执行后, 会有如下输出, 代码正在上传
浏览器访问http://172.16.66.130:5000/v2/_catalog, 输出
{"repositories": ["tensquare_base"]}
(6) 进入宿主机, 查看镜像
docker images
输出如上内容, 表示微服务已经做成镜像
(7) 启动容器:
docker run -di --name=base -p 9001:9001 172.16.66.130:5000/tensquare_base:1.0-SNAPSHOT