1.微服务的部署
第一步,服务Docker化
第二步,将Docker化后的镜像推到我们自己的仓库中
第三步,搭建高可用的集群环境
现在工程目录是这个样子的:目前只有最基础的三个服务,功能只有用户的注册和登录。
ok,先拉取一个java 的基础镜像
可以把这个镜像跑一下,看看
docker run -it --entrypoint bash registry.saas.hand-china.com/tools/javabase:0.5.0
查看操作系统的版本:
java 版本:
ok,第一个docker化的服务为注册中心,因为他没什么依赖,注意配置不能有写死的东西
新建一个Dockerfile就建在根目录下,然后上传到服务器上,再用Dokcer打出镜像
Dockerfile:
FROM registry.saas.hand-china.com/tools/javabase:0.5.0
MAINTAINER Mr.Wang
COPY target/app.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
创建一个build.sh
启动mysql数据库:
把mysql的镜像拉一下:
docker pull registry.saas.hand-china.com/tools/mysql:5.7.23
docker pull registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17
docker run -d --name mysql -v mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=133309 -e MYSQL_DATABASE=sys-user registry.saas.hand-china.com/tools/mysql:5.7.23
这个时候由于数据卷之前有其他的容器用过,导致使用这个挂载无法生成指定的sys-user数据库,所以我们把数据卷要删除一下,
查看数据卷的命令:
docker volume ls
删除数据卷的命令:
docker volume rm <数据卷名字>
删除完了启动数据库。
然后运行我们之前打好的服务的容器,要想看到效果记得做一个端口映射。当然这个服务是依赖与eureka的,我们首先应该将eureka docker化。启动eureka
docker run -d --name eureka-server -p 8000:8000 eureka-app:1.0 --host.name=192.168.237.129
启动eureka的时候遇到问题,就是做了端口的映射,PORTS那一栏没有端口信息,本地也访问不到,然后关闭了 centos的selinux,vim /etc/sysconfig/selinux 把SELINUX=enforcing 改为 SELINUX=disabled,然后重启服务器,之后还是访问不到,所以把命令修改为上面的命令加上了--name的信息之后恢复正常。
然后启动user服务:
docker run -it --name user-service -p 8002:8002 user-app:1.0 --eureka.host=192.168.237.129 --mysql.address=192.168.237.129
但是访问user服务的时候出问题了,访问不到,经检查是端口不通:解决的办法和上面解决eureka是一样的。端口的映射要放在--name后面,镜像名字的前面。
问题解决,能访问接口:访问swagger接口
ok ,Uaa服务也是这样部署
docker run -d --name uaa-service -p 8001:8001 uaa-app:1.0 --eureka.host=192.168.237.129 --mysql.address=192.168.237.129
用户登陆报错:
这里需要考虑的是微服务和微服务的通信,微服务和外围服务的通信。这里的服务和服务的通信采用docker的link机制,服务与基础资源的访问使用端口映射的方式。
写一个DockerCompose来启动各个容器,看看他又哪些网络,就用已经存在的吧,懒得去创建
docker-compose.yml
version: '3'
networks:
default:
external:
name: test-docker-compose_c7nNetwork
services:
eureka-server:
image: eureka-app:1.0
command:
- "--eureka.host=192.168.237.129"
ports:
- 8000:8000
uaa-service:
image: uaa-app:1.0
command:
- "--mysql.address=192.168.237.129"
- "--eureka.host=192.168.237.129"
user-service:
image: user-app:1.0
links:
- uaa-service
command:
- "--mysql.address=192.168.237.129"
- "--eureka.host=192.168.237.129"
ports:
- 8002:8002
# api-gateway-zuul:
# image: api-gateway-zuul:latest
# links:
# - course-edge-service
# - user-edge-service
# ports:
# - 8080:8080
用户登陆成功: