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