持续集成与容器管理
DockerMaven插件
微服务的部署方法有两种:
1)手动部署:首先基于代码生成的jar包或者.war 包上传到服务器,并拷贝到服务器
2) 通过Maven插件自动部署
Maven插件自动部署的步骤:
1)修改宿主机的docker配置,让其可以远程访问
vim /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中增加配置
<build>
<finalName>demo</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>192.168.73.128: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.73.128:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
下面这个配置代表最后生成的镜像名称
也就是执行docker images 打出来的镜像名称那一列的东西
<imageName>192.168.73.128:5000/${project.artifactId}:${project.version}
baseImage代表的是基础镜像,相当于FROM中的东西
<baseImage>jdk1.8</baseImage>
以上配置会自动生产Dockerfile
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","-jar","/demo.jar"]
- 在终端进入工程目录执行以下命令
mvn clean package docker:build -DpushImage
执行完后会看见代码正在上传
6)浏览器访问如下地址会看见镜像已经上传成功
7)进入宿主机执行docker images 也可以查看到镜像
8)启动容器
docker run -d --name=base -p 6868:6868 私服的ip:5000/刚才的静像:1.0-SNAPSHOT