# 服务迁移云托管服务检查清单

将自己的项目从服务器迁移到微信云托管服务之前，我们推荐你按照如下清单进行检查，在一切确定无误后再实施操作步骤。

## 检查清单

1. 你的项目如果有数据库，是否是随着项目一同安装在服务器上？没有此种情况则通过
> 如果是，需要将数据库迁移到云数据库，微信云托管提供[Serverless 形态的 Mysql 数据库](/minigame/dev/wxcloudrun/src/guide/mysql/index)，性价比更高，如果需要可以使用。

2. 你的项目有用户上传的文件，是否直接存在项目所在的服务器上？没有此种情况则通过
> 如果是，则需要将上传文件业务迁移到其他存储媒介，可以使用微信云托管提供的[对象存储](/minigame/dev/wxcloudrun/src/guide/storage/index)，也可以在其他云厂商购买对象存储服务。

3. 你的项目语言和框架是否支持容器化改造？支持则通过
>微信云托管服务的运作是容器方案，你可以以“项目语言+框架+Docker”为关键词在网络上搜索相关内容，如果有丰富的经验内容，则证明是成熟可支持容器化改造的。

4. 你的项目是否对外暴露多个端口？一个端口则通过
>如果有多个端口，你需要将项目拆分成多个子服务，保证每个子服务是一个端口。微信云托管目前不支持同一个服务多个端口。

5. 你是否强依赖于改变服务器的配置文件实现服务的升级和变更？没有则通过
>如果你习惯依赖通过 SSH 工具等进入服务器内部改变配置文件，请改掉这种习惯，容器化运行过程中非常不建议进入进行修改，会打破弹性扩缩的运行状态，你可以通过改变环境变量的形式来实现服务的配置更新。

## 部署步骤

在以上检查清单全部验证通过后，你可以进行服务迁移过程了。

1. 首先，请根据自己的 Docker 经验或在网上找到的经验，对项目程序进行容器化改造，主要是产出 Dockerfile 文件；你也可以在本机安装 Docker 程序来尝试构建你的项目，测试你的改造是否可行。
> 你可以以“项目语言+框架+Docker”为关键词在网络上搜索相关内容，也可以在[场景化文档](/minigame/dev/wxcloudrun/src/scene/index)中找寻自己适合的构建方案。

2. 完成构建后，请再次确认你的项目中有关数据库的连接地址是线上可访问的外网地址或内网地址，而不是 localhost:3306 这一类。
> 再次提醒，请不要在云托管服务中部署 Mysql 或其他类似的数据库应用，云托管服务是计算型的，在使用过程中会发生扩缩，数据无法持久化保存。

3. 将容器化改造后的项目上传到微信云托管服务中，可以参考[自定义部署步骤](/minigame/dev/wxcloudrun/src/quickstart/custom/index)
> 其中需要注意明确，你项目暴露的端口 和 控制台配置的端口 保持一致。

4. 部署完成后，访问公网地址或者通过云端调试测试可用性，测试 OK 后即完成整个改造过程。

## 注意事项

1. 服务间的内网访问，目前因为安全原因暂时下线，只能使用公网互相访问，有进展我们会修改此项。
2. 微信云托管服务挂载硬盘，目前还不支持，数据多实例共享暂时只能使用数据库，存储等媒介沟通。
3. Redis 暂未支持，可以在腾讯云或其他云厂商购买。
