# micro-service-docker-compose
**Repository Path**: Gitee-forks-projects/micro-service-docker-compose
## Basic Information
- **Project Name**: micro-service-docker-compose
- **Description**: 简单的微服务。
使用python实现发送邮件功能,thrift作为rpc为java端提供服务。
课程模块使用dubbo,进行服务通信。
使用zuul组件统一入口。
使用docker-compose对服务进行编排。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2020-04-21
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 流程图

## 模块说明
1. message-thrift-python-service
使用thrift的方式声明接口。
声明了两种方式,python和java.
python版本的实现在 `message_sevice.py`.
java版本的不需要实现.只需要调用 API 接口即可.
端口号为 `9090`
2. message-thrift-message-api
声明JAVA版的接口.
3. user-thrift-service-api
使用thrift的方式声明方法和实体
4. user-thrift-service
完成3声明的方法.从数据库中获取`user`相关信息.
5. user-edge-service-client
过滤请求,没有token的请求都发送到user-edge-service
6. user-edge-service
向外提供REST服务.
使用thrift的方式调用user-thrift-service的方法
7. course-dubbo-service-api
dubbo的方式提供公共API
8. course-dubbo-service
完成course-dubbo-service-api的方法,并用service标记,成为dubbo服务提供方
9. course-edge-service
向外提供REST服务,访问course
10. api-gateway-zuul
整个zuul中,为整个项目提供路由功能.
## 需要的基础服务
1. mysql
2. redis
3. zookeeper
## 数据库
```mysql
create database IF NOT EXISTS db_user;
USE db_user;
CREATE TABLE pe_user (
id int AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(32),
password VARCHAR(32),
real_name VARCHAR(32),
mobile VARCHAR(32),
email VARCHAR(32)
);
CREATE TABLE pe_teacher (
user_id int PRIMARY KEY,
intro VARCHAR(32),
stars int
);
create database IF NOT EXISTS db_course;
USE db_course;
CREATE TABLE pe_course (
id int AUTO_INCREMENT PRIMARY KEY,
String VARCHAR(32),
description VARCHAR(32)
);
CREATE TABLE pr_user_course (
user_id int,
course_id int,
PRIMARY KEY(user_id,course_id)
);
```
## 运行
1. `sh builder-all.sh`.打包所有项目并生成docker镜像
2. `docker-compose -f docker-compose-local.yml up -d`
3. 将`127.0.0.1 www.mooc.com`加入到`/etc/hosts`文件中
4. 使用rest工具`post`方式访问`http://www.mooc.com:8080/user/sendVerifyCode`,参数为`email` `xxx@xxx`.查看邮箱中的验证码
5. 使用rest工具`post`方式访问`http://www.mooc.com:8080/user/register`
参数为:`email xxx@xxx`,`username xxx`,`password xxx`,`verifyCode xxx`
`verifyCode`为上一步接收的验证码
6. 浏览器访问`http://www.mooc.com:8080/user/login`获取`token`值
7. 浏览器访问`http://www.mooc.com:8080/course/courseList?token=31r4gvt2dcha4g52tfxlf55lyfupbt11`
(`token为上一步得到的值`)
结果为课程列表
8. `docker-compose -f docker-compose-local.yml down --rmi all`清理所有镜像
## 待解决的问题
连续发送验证码,会请求超时.大概连续10次以上,再也连不上了.发送验证码的功能是用python+thrift实现的,不懂.