微服务部署有两种方法:
(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚
拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这
里学习如何自动部署,这也是企业实际开发中经常使用的方法。
1.安装docker私有仓库
1)拉取私有仓库 镜像
docker pull registry
2)启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3) 打开浏览器查看是否搭建成功
(换成自己ip)192.168.40.128:5000/v2/_catalog
4) 让docker信任私有仓库地址,修改daemon.json
vim /etc/docker/daemon.json 添加 "insecure-registries":["192.168.40.128(换成你自己IP):5000"]
5)重启Docker且启动仓库registry
systemctl restart docker docker start registry
2.安装基础镜像JDK.1.8
1) 上传 linux的jdk1.8安装包
2)创建目录并把jdk包移动到目录
mkdir -p /usr/local/dockerjdk8 mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8 cd /usr/local/dockerjdk8
3)创建Dockerfile文件
vi Dockerfile 输入 FROM centos:7 MAINTAINER itcast WORKDIR /usr RUN mkdir /usr/local/java ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$PATH
4)构建镜像
docker build -t='jdk1.8' .
3.配置docker可以被远程访问
1)备份一下docker.service文件
cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak
2)在docker.service文件中ExecStart=后添加配置
vim /lib/systemd/system/docker.service ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
3)刷新配置,重启服务
systemctl daemon-reload systemctl restart docker docker start registry
4)在需要部署的项目的pom文件上面添加插件
<build> <finalName>luojiang-demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--这里写上main方法所在类的路径--> <configuration> <mainClass>com.example.demo.LuojiangDemoApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </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>服务器的ip: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://私服所在服务器ip:2375</dockerHost> </configuration> </plugin> </plugins> </build>
5)本地打包或执行构建推送命令
mvn install mvn package docker:build -DpushImage
6)查看上传的docker镜像, 查看私有仓库镜像
docker images
浏览器中访问
(你自己的IP)192.168.40.128:5000/v2/_catalog
7) 启动并测试上传的系统
docker run -di --name=base -p 8080:8080 192.168.40.128:5000/springboot_v2:2.0.0.RELEASE(宿主机端口:容器端口 镜像名称:版本号)