注意:
1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区
2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示
一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以
1. 先创建一个命名空间
2. 然后创建一个镜像仓库
3. 查看并记录镜像公网地址
4. 创建镜像,首先保证本地已经安装号docker服务
4.1 登录阿里云docker
docker login --username=你的用户名 registry.cn-hangzhou.aliyuncs.com
4.2 拉取多商户预制镜像
docker pull leekay0218/crmeb-mer
4.3 在多商户项目根目录创建Dockerfile文件,内容为
FROM leekay0218/crmeb-mer
MAINTAINER crmeb.com
# 复制代码
ADD . /var/www
# 设置容器启动后的默认运行目录
WORKDIR /var/www
# 默认入口命令
ENTRYPOINT ["/entrypoint.sh"]
# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
#CMD []
CMD ["php", "-d", "memory_limit=2048M", "think", "swoole"]
二、开通阿里云mysql服务 RDS管理控制台 (aliyun.com)
1. 开通服务
2. 创建数据库,mysql选择5.7
3. 配置按照自己的需求选择即可,我这里演示用,所以选择的最低配置
4. 这里选择默认即可, 没有的话就创建一个, 后面服务需要选择同一个
5. 为了方便使用,直接设置好root密码
6. 等待mysql创建完成
7. 开通外网地址,自行创建多商户的数据库并导入数据.这个就不做演示了
8. 修改sql-mode配置为: NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
9. 刷新检查一下,确保修改成功
10. 修改项目根目录.env文件中的mysql配置,如下:
填写配置并保存, 数据库配置完毕了
三、开通redis服务 云数据库Redis版管理控制台 (aliyun.com)
1. 创建redis服务,区域和mysql保持一致
2. 选择相同的网络配置
3. 按照需求选择配置
4. 设置redis密码
5. 开通完成
6. 等待创建完成
7. 设置白名单,这里按照自己的需求设置,我这里设置0.0.0.0/0是方便演示,有安全问题
8. env文件填写配置并保存, redis配置完毕了
四、 推送镜像
1. 在项目根目录执行下面的命令,代码打包镜像推送到阿里云云仓库
docker build -t leekay0218/crmeb-mer .
docker tag leekay0218/crmeb-mer 你的公网镜像地址
docker push 你的公网镜像地址
2. 推送成功后镜像更新时间会更新
五、 创建阿里云集群服务容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云 (aliyun.com)
1. 创建集群,选择杭州K区
2. 按照自己的需求选择,然后下一步
3. 按需求选择负载均衡配置
4. 创建集群
5. 待集群初始化完毕
6. 创建应用
7. 选择镜像,tag不用填
8. 按照自己的需求选择
9. 填写端口,8324
10. 创建应用,等待应用初始化完毕
六、 创建服务,获取公网IP
1. 创建应用
2. 等待应用启动完毕后,访问118.31.68.253/api/config, 有数据说明部署成功;
3. 如果失败请检查镜像,可以在本地运行镜像检查是否正常. 本地运行时记得将redis和mysql的访问地址改为外网地址;
4. 集群服务使用完毕后,释放时记得删除干净,并单独删除负载均衡服务,避免意外扣费;
七、代码更新及集群配置
1. 后端代码更新后需要重新打包镜像并推送到阿里云docker
2. 然后点击重新部署
3. 修改集群服务器配置
编辑可以修改服务器配置
伸缩可以修改集群服务器数量
4. 队列服务
在一个阿里云服务器中再部署一套多商户项目代码, 单独启动多商户的队列服务并运行多商户项目. 保证队列和ws可用
ws需要配置独立的域名单独访问
5. 前端项目
在一个阿里云服务器中单独部署多商户的移动端,平台端,商户端. 并使用独立的域名访问, 接口地址使用集群服务的域名
集群部署完毕,感谢浏览,附件中有word文档可下载查看
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}