在腾讯云上使用 Docker 部署 Java 项目是一个常见且高效的部署方式。以下是详细的步骤指南,帮助你从零开始完成部署:
🚀 一、准备工作
-
注册腾讯云账号
- 访问 腾讯云官网
- 注册并登录。
-
购买云服务器(CVM)
- 推荐配置:Ubuntu 20.04 / CentOS 7 或以上。
- 开放端口:22(SSH)、80、443、8080(根据应用需求)。
-
本地开发环境
- 安装好 JDK、Maven/Gradle、Docker Desktop(可选,用于测试镜像)。
🐳 二、构建 Java 项目的 Docker 镜像
1. 准备 Java 项目
确保你的项目可以正常打包成 JAR 包:
mvn clean package # Maven 项目
# 或
./gradlew build # Gradle 项目
生成的文件通常为 target/myapp.jar。
2. 编写 Dockerfile
在项目根目录创建 Dockerfile:
# 使用官方 OpenJDK 基础镜像(建议使用特定版本)
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 将本地 jar 包复制到容器中
COPY target/myapp.jar app.jar
# 暴露应用端口(如 Spring Boot 默认 8080)
EXPOSE 8080
# 容器启动时运行 Java 应用
ENTRYPOINT ["java", "-jar", "app.jar"]
注意:
myapp.jar替换为你实际的 JAR 文件名。
3. 构建镜像(可选本地测试)
docker build -t my-java-app:latest .
运行测试:
docker run -d -p 8080:8080 my-java-app
☁️ 三、上传镜像到腾讯云(推荐使用 TCR)
1. 创建容器镜像服务 TCR
- 登录腾讯云控制台 → 容器服务 → 容器镜像服务 TCR。
- 创建一个「个人版」或「企业版」实例(个人版免费)。
- 创建命名空间和镜像仓库(如:
my-java-app)。
2. 登录 TCR 镜像仓库
获取登录命令(在 TCR 控制台中):
docker login --username=xxx ccr.ccs.tencentyun.com
3. 给镜像打标签并推送
# 格式:registry/namespace/repo:tag
docker tag my-java-app:latest ccr.ccs.tencentyun.com/your-namespace/my-java-app:v1
docker push ccr.ccs.tencentyun.com/your-namespace/my-java-app:v1
💻 四、在腾讯云 CVM 上部署
1. 登录云服务器
ssh root@your-server-ip
2. 安装 Docker
# Ubuntu 示例
apt update
apt install -y docker.io docker-compose
3. 登录 TCR(同上)
docker login --username=xxx ccr.ccs.tencentyun.com
4. 拉取并运行镜像
docker pull ccr.ccs.tencentyun.com/your-namespace/my-java-app:v1
docker run -d -p 8080:8080 --name java-app ccr.ccs.tencentyun.com/your-namespace/my-java-app:v1
🔍 五、验证部署
访问应用:
http://<你的公网IP>:8080
查看日志:
docker logs java-app
✅ 六、进阶优化建议
| 功能 | 建议 |
|---|---|
| 使用 Docker Compose | 管理多容器(如加 MySQL、Redis) |
| 健康检查 | 在 Dockerfile 中添加 HEALTHCHECK |
| 环境变量 | 使用 -e 参数传入配置 |
| 持久化日志 | 挂载日志目录 -v /logs:/app/logs |
| 自动部署 | 结合 CI/CD(如 Jenkins、GitHub Actions)推送到云 |
📦 示例:docker-compose.yml(含数据库)
version: '3'
services:
app:
image: ccr.ccs.tencentyun.com/your-namespace/my-java-app:v1
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/mydb
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydb
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
❓ 常见问题
- 端口未开放? → 检查腾讯云安全组是否放行 8080。
- 镜像拉取失败? → 确保已
docker login并网络正常。 - 应用启动报错? →
docker logs <container>查看错误日志。
✅ 总结
通过 Docker + 腾讯云 TCR + CVM 的组合,你可以实现 Java 项目的标准化、可移植、易维护的部署流程。
如果你使用的是 Spring Boot,这种方式尤其高效!
需要我帮你生成完整的脚本或自动化部署方案(如 GitHub Actions 自动构建推送)吗?欢迎继续提问!
CLOUD技术博