本文基于Spring cloud, Docker, Docker swarm, mysql等构建微服务演示项目。
Spring Cloud + Docker Swarm 演示环境
- Windows 10 – Docker Client(Spring Cloud 开发环境)
- CentOS-101 – Manager
- Ubuntu-102 – Worker1
- CentOS-103 – Worker2
Docker Registry v2 - 部署在CentOS-101上
Spring Cloud 项目 - MallManagement
项目源代码github:
https://github.com/rickiechina/microservice-mallmanagement
第一步,构建镜像,并上传到registry 仓库
1. 设置 Docker的insecure-registries 属性,支持Docker Client 端推送images 镜像
如不按照上述设置该属性,Docker Client 推送 Images 将产生如下异常:
docker registry push错误“server gave HTTP response to HTTPS client”
解决方法:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{ "insecure-registries":["192.168.56.101:5000"] }
[root@local ~]# vim /etc/docker/daemon.json
重启 docker:
[root@local ~]# systemctl daemon-reload
[root@local ~]# systemctl restart docker.service
验证insecure-registries 添加成功:
[root@local ~]# docker info
2. 对整个MallManagement 项目,进行maven build 操作:(可略过)
mvn clean package --- 仅仅构建 jar 包,验证代码是否正常。
[INFO] microservice-mallmanagement 0.0.1-SNAPSHOT ......... SUCCESS [ 1.553 s]
[INFO] microservice-eureka-server ......................... SUCCESS [ 6.306 s]
[INFO] microservice-gateway-zuul .......................... SUCCESS [ 2.164 s]
[INFO] microservice-orderservice .......................... SUCCESS [ 4.694 s]
[INFO] microservice-userservice 0.0.1-SNAPSHOT ............ SUCCESS [ 2.384 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.801 s
[INFO] Finished at: 2018-06-08T13:09:48+08:00
3. Docker Client(在Windows 10 系统)向 Docker Registry 推送镜像:(可略过)
针对单个项目,构建 image镜像。注意:需要在子项目的根目录下面,执行下面的命令,不能在项目的根目录。
D:GithubSpringCloudDockermicroservice-mallmanagementmicroservice-eureka-server>mvn dockerfile:build
下面是构建 eureka server image 镜像。
[INFO] Detected build of image with id 47302f5bfdea
[INFO] Building jar: D:GithubSpringCloudDockermicroservice-mallmanagementmicroservice-eureka-serverargetmicroservice-eureka-server-0.0.1-SNAPSHOT-docker-info.jar
[INFO] Successfully built 192.168.56.101:5000/microservice-eureka-server:0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.412 s
[INFO] Finished at: 2018-06-08T13:14:26+08:00
[INFO] ------------------------------------------------------------------------
如上述命令出现异常,也可以通过 docker build 命令行,手工构建镜像(需要到dockerfile 子项目目录下执行):
D:GithubSpringCloudDockermicroservice-mallmanagementmicroservice-eureka-server>docker build -t 192.168.56.101:5000/microservice-eureka-server:0.0.1-SNAPSHOT .
可以略过下面的步骤,直接使用 mvn clean install 来完成整个项目的 images 镜像推送。
D:>docker push 192.168.56.101:5000/microservice-eureka-server
The push refers to repository [192.168.56.101:5000/microservice-eureka-server]
bfd212a869c0: Pushed
73ad47d4bc12: Pushed
c22c27816361: Pushed
04dba64afa87: Pushed
500ca2ff7d52: Pushed
782d5215f910: Pushed
0eb22bfb707d: Pushed
a2ae92ffcd29: Pushed
4. mvn clean install -- 对整个MallManagement 项目构建images镜像,并推送到 docker registry 中。
D:GithubSpringCloudDockermicroservice-mallmanagement>mvn install 或者 mvn clean install
[INFO] Reactor Summary:
[INFO]
[INFO] microservice-mallmanagement 0.0.1-SNAPSHOT ......... SUCCESS [ 1.481 s]
[INFO] microservice-eureka-server ......................... SUCCESS [ 23.748 s]
[INFO] microservice-gateway-zuul .......................... SUCCESS [ 19.344 s]
[INFO] microservice-orderservice .......................... SUCCESS [ 16.014 s]
[INFO] microservice-userservice 0.0.1-SNAPSHOT ............ SUCCESS [ 35.721 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:37 min
[INFO] Finished at: 2018-06-08T14:23:22+08:00
[INFO] ------------------------------------------------------------------------
docker images -- 查看构建完成的images 镜像
D:GithubSpringCloudDockermicroservice-mallmanagement>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.101:5000/microservice-userservice 0.0.1-SNAPSHOT db5d7e7b3902 About an hour ago 354MB
192.168.56.101:5000/microservice-orderservice 0.0.1-SNAPSHOT 06e8f2c4d4f8 About an hour ago 355MB
192.168.56.101:5000/microservice-gateway-zuul 0.0.1-SNAPSHOT 3b2c1dc25574 About an hour ago 351MB
192.168.56.101:5000/microservice-eureka-server 0.0.1-SNAPSHOT 5e200ceaa8ce About an hour ago 351MB
访问 http://192.168.56.101:5000/v2/_catalog,查看registry 仓库中的镜像列表:
{
repositories: [
"microservice-eureka-server