【部署】使用华为云容器化部署Java项目指南
通过以上步骤,您应该能够成功在华为云上容器化部署Java应用。根据实际需求,可以进一步优化配置,如自动扩缩容、金丝雀发布等高级功能。
·
一、准备工作
-
华为云账号准备
- 注册华为云账号并完成实名认证
- 开通容器镜像服务(SWR)和云容器引擎(CCE)服务
-
开发环境准备
- 安装JDK(建议JDK 8或11)
- 安装Maven或Gradle
- 安装Docker
- 安装华为云CLI工具(可选)
二、容器化Java项目
1. 创建Dockerfile
# 基础镜像
FROM openjdk:11-jre-slim
# 维护者信息
LABEL maintainer="yourname@example.com"
# 设置工作目录
WORKDIR /app
# 复制构建好的jar包
COPY target/your-application.jar app.jar
# 暴露端口(根据你的应用调整)
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
2. 构建Docker镜像
# 先使用Maven构建项目
mvn clean package
# 构建Docker镜像
docker build -t your-java-app .
三、华为云容器镜像服务(SWR)操作
- 登录华为云SWR
docker login -u cn-north-4@your-account -p your-password swr.cn-north-4.myhuaweicloud.com
- 上传镜像到SWR
# 标记镜像
docker tag your-java-app swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:latest
# 推送镜像
docker push swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:latest
四、华为云容器引擎(CCE)部署
1. 通过控制台创建部署
- 登录华为云控制台,进入CCE服务
- 创建集群(如果没有合适的集群)
- 创建工作负载:
- 选择"无状态负载"
- 设置应用名称
- 选择镜像:从SWR选择你上传的Java应用镜像
- 配置容器端口(与Dockerfile中EXPOSE一致)
- 设置资源配额(CPU/内存)
- 配置高级设置(如环境变量、健康检查等)
2. 通过YAML文件部署(推荐)
创建deployment.yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-app-deployment
labels:
app: java-app
spec:
replicas: 2
selector:
matchLabels:
app: java-app
template:
metadata:
labels:
app: java-app
spec:
containers:
- name: java-app-container
image: swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:latest
ports:
- containerPort: 8080
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "500m"
memory: "512Mi"
创建service.yaml文件:
apiVersion: v1
kind: Service
metadata:
name: java-app-service
spec:
selector:
app: java-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
应用配置:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
五、高级配置
- 配置健康检查
在Deployment中添加:
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 20
periodSeconds: 5
- 配置环境变量
env:
- name: SPRING_PROFILES_ACTIVE
value: "prod"
- name: DB_URL
valueFrom:
secretKeyRef:
name: db-secret
key: url
- 使用ConfigMap和Secret
volumes:
- name: config-volume
configMap:
name: app-config
volumeMounts:
- name: config-volume
mountPath: /etc/config
六、监控与日志
- 查看日志
kubectl logs -f <pod-name>
-
使用华为云APM服务
- 开通应用性能管理服务
- 在应用中集成APM Agent
-
使用华为云LTS日志服务
- 配置日志采集规则
- 查看和分析日志
七、持续部署(CI/CD)建议
-
使用华为云DevCloud
- 配置代码仓库
- 创建构建任务
- 设置部署流水线
-
GitHub Actions示例
name: Build and Deploy to Huawei CCE
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Maven
run: mvn clean package
- name: Build Docker image
run: docker build -t your-java-app .
- name: Login to Huawei SWR
run: |
docker login -u ${{ secrets.HW_SWR_USER }} -p ${{ secrets.HW_SWR_PASSWORD }} swr.cn-north-4.myhuaweicloud.com
- name: Push to Huawei SWR
run: |
docker tag your-java-app swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:${{ github.sha }}
docker push swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:${{ github.sha }}
- name: Deploy to Huawei CCE
run: |
kubectl set image deployment/java-app-deployment java-app-container=swr.cn-north-4.myhuaweicloud.com/your-namespace/your-java-app:${{ github.sha }}
常见问题解决
-
镜像拉取失败
- 检查SWR仓库权限
- 确保网络连通性
- 验证镜像标签是否正确
-
应用启动失败
- 检查容器日志
- 验证环境变量配置
- 检查资源配额是否足够
-
服务无法访问
- 检查Service类型是否正确(LoadBalancer)
- 验证安全组规则
- 检查Ingress配置(如果使用)
通过以上步骤,您应该能够成功在华为云上容器化部署Java应用。根据实际需求,可以进一步优化配置,如自动扩缩容、金丝雀发布等高级功能。
更多推荐


所有评论(0)