微服務部署有兩種方法:
(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(宿主機端口:容器端口 鏡像名稱:版本號)