华为开发者空间介绍
华为开发者空间是为全球开发者打造的云上开发环境,提供云主机、开发工具链和云存储,无缝集成昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等根技术生态。开发者可快速构建、调试AI+容器化应用,无需本地环境,实现高效创新。
免费领取开发者空间云主机
案例介绍:基于ModelArts的智能图像识别应用
技术栈:Vue3前端 + Flask微服务 + ModelArts AI引擎 + Docker容器化
核心场景:用户上传图片,前端调用华为云AI接口识别物体,结果可视化展示,全程容器化部署。
前置准备
技术步骤流程
步骤1:初始化开发空间
# 1.1 启动云主机(选择Ubuntu 20.04)
# 1.2 打开Web IDE(VSCode在线版)
# 1.3 安装必备工具
sudo apt update
sudo apt install -y docker.io nodejs npm python3-pip python3.12-venv
# 1.4 配置Python环境
sudo python3 -m venv venv
source venv/bin/activate
pip install flask huaweicloudsdkcore huaweicloudsdkimage
步骤2:创建项目结构
mkdir -p ai-image-app/{frontend,backend}
cd ai-image-app
tree .
# .
# ├── frontend # Vue3前端
# ├── backend # Flask微服务
# └── Dockerfile
步骤3:后端开发(Flask服务)
backend/app.py
:
import os
from flask import Flask, request, jsonify
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkimage.v2 import ImageClient, RunImageTaggingRequest
app = Flask(__name__)
# 从环境变量获取AK/SK(安全!)
credentials = BasicCredentials(
os.getenv('HW_AK'),
os.getenv('HW_SK'),
project_id=os.getenv('HW_PROJECT_ID') # 如cn-north-4
)
client = ImageClient.new_builder().with_credentials(credentials).build()
@app.route('/recognize', methods=['POST'])
def recognize():
image = request.files['image']
# 临时保存文件(实际生产环境建议使用流处理)
image.save('/tmp/temp_img.jpg')
# 调用ModelArts API
req = RunImageTaggingRequest()
req.body = {
"image": open('/tmp/temp_img.jpg', 'rb'),
"threshold": 0.5, # 置信度阈值
"language": "zh" # 中文标签
}
response = client.run_image_tagging(req)
# 提取识别结果
tags = [{"tag": t.tag, "confidence": t.confidence} for t in response.result.tags]
return jsonify({"result": tags})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
步骤4:前端开发(Vue3)
frontend/src/App.vue
:
<template>
<div class="container">
<h1>华为云AI图像识别</h1>
<input type="file" @change="handleUpload" accept="image/*">
<div v-if="result">
<h2>识别结果:</h2>
<ul>
<li v-for="(item, index) in result" :key="index">
{{ item.tag }} - 置信度: {{ (item.confidence * 100).toFixed(1) }}%
</li>
</ul>
</div>
< img v-if="previewUrl" :src="previewUrl" alt="预览" width="300">
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
previewUrl: '',
result: null
}
},
methods: {
handleUpload(e) {
const file = e.target.files[0];
this.previewUrl = URL.createObjectURL(file);
const formData = new FormData();
formData.append('image', file);
axios.post('/recognize', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
}).then(res => {
this.result = res.data.result;
}).catch(err => {
console.error('识别失败:', err);
alert('识别失败,请检查控制台日志');
});
}
}
}
</script>
步骤5:配置Docker容器化
Dockerfile
:
# 前端构建阶段
FROM node:16 as frontend-builder
WORKDIR /app
COPY frontend/package*.json ./
RUN npm install
COPY frontend .
RUN npm run build
# 后端服务阶段
FROM python:3.9-slim
WORKDIR /app
# 安装系统依赖
RUN apt update && apt install -y libgl1
# 复制后端代码
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY backend .
# 复制前端构建产物
COPY --from=frontend-builder /app/dist /app/static
# 设置环境变量(实际部署时从安全配置读取)
ENV HW_AK=your_ak
ENV HW_SK=your_sk
ENV HW_PROJECT_ID=cn-north-4
ENV FLASK_APP=app.py
EXPOSE 5000
CMD ["python", "-m", "flask", "run", "--host=0.0.0.0"]
步骤6:构建与部署
# 6.1 构建Docker镜像
docker build -t ai-image-app .
# 6.2 本地测试运行
docker run -d -p 5000:5000 --name ai-demo ai-image-app
# 6.3 推送镜像到华为云SWR
docker login -u cn-north-4@yourAK -p yourSK swr.cn-north-4.myhuaweicloud.com
docker tag ai-image-app swr.cn-north-4.myhuaweicloud.com/your-namespace/ai-image-app:v1
docker push swr.cn-north-4.myhuaweicloud.com/your-namespace/ai-image-app:v1
# 6.4 在华为云CCI部署
# 进入容器实例服务 → 创建负载 → 选择推送的镜像
步骤7:配置运维监控(AOM)
- 登录AOM控制台
- 左侧导航选择 应用监控 > 容器监控
- 找到部署的
ai-image-app
容器组 - 配置关键监控项:
- CPU/MEM使用率阈值告警(>80%)
- HTTP请求错误率(>5%)
- 接口响应时间(P99>500ms)
- 设置邮件/短信通知
验证流程
- 访问应用URL:
http://your-cci-ip:5000
- 上传测试图片(建议包含明显物体)
- 查看识别结果:
// 预期返回 { "result": [ {"tag": "狗", "confidence": 0.96}, {"tag": "草地", "confidence": 0.87} ] }
- 在AOM查看监控指标
创新点
- AI驱动前端交互:
前端直接调用ModelArts RESTful API,减少后端中转层,提升响应速度。 - 容器化微服务运维:
将Flask服务与Vue应用分离为独立容器,通过Nginx反向代理,实现高内聚低耦合。 - 智能化运维实践:
利用AOM自动监控容器资源占用、API调用延迟,实时推送告警至邮箱。
常见问题解决
问题 | 解决方案 |
---|---|
403 Forbidden | 检查AK/SK权限 → IAM添加ModelArts CommonOperations |
图片上传失败 | 确保Nginx配置client_max_body_size 20M |
识别结果为空 | 检查图片格式(支持JPG/PNG)和大小(<10MB) |
容器启动失败 | docker logs <container_id> 查看Python错误 |
前端跨域错误 | Flask添加CORS支持:pip install flask-cors |
开发者空间核心价值
- 开箱即用的AI能力:无缝集成ModelArts,5行代码调用复杂AI模型。
- 纯云上开发闭环:从编码→调试→容器部署→运维监控,全程无需本地设备。
- 成本优化:云主机按需计费,AOM免费基础监控降低运维负担。
立即体验华为开发者空间
- 开发者空间官网:https://developer.huaweicloud.com/workspace/
- 限时活动专题:AI应用开发挑战赛
作者寄语:作为前端开发者,华为云开发空间让我专注于业务逻辑而非环境运维,AI+容器的黄金组合,将是未来高效开发的标配!