当前位置: 首页 > news >正文

Docker项目部署(黑马商城项目为例)

1. 网络管理(容器互联)

# 创建自定义网络(项目隔离)
docker network create hmall-net  //加入自定义网络的容器可以通过容器名互相访问
# 查看所有网络
docker network ls
# 将现有容器加入网络(如 MySQL)
docker network connect hmall-net mysql --alias db

 2. MySQL 容器部署(数据持久化)
 

# 启动 MySQL 容器
docker run -d \--name mysql \--network hmall-net \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v $PWD/mysql/data:/var/lib/mysql \-v $PWD/mysql/conf:/etc/mysql/conf.d \-v $PWD/mysql/init:/docker-entrypoint-initdb.d \mysql

        这样就实现数据的持久保存了(即使你删除mysql容器后,他依然还存在,只需创建mysql容器时并指定之前定好的目录或文件) 


3. Java项目构建与部署

root中只需要打包好的jar包与dockerfile文件

# 在项目目录构建镜像(Dockerfile 所在目录)
docker build -t hmall .
# 运行 Java 应用容器
docker run -d \--name hmall \--network hmall-net \-p 8080:8080 \hmall                           
//第一个hmall的意思是容器名,第二个是加入的网络名称,第三个是使用之前build的hmall镜像

4. Nginx 容器部署(反向代理/静态资源)

# 使用 volume 挂载静态资源
docker run -d \--name nginx \--network hmall-net \-p 80:80 \-v html:/usr/share/nginx/html \nginx
# 查看 volume 物理路径(修改静态资源)
docker volume inspect html

5. 容器管理常用命令

# 强制删除容器(解决名称冲突)
docker rm -f [容器名]
# 查看容器详细 IP(网络调试)
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器名]
# 格式化查看容器列表
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 进入容器终端
docker exec -it [容器名] bash

 6. 故障排查

# 查看容器日志(重要!)
docker logs -f hmall
# 检查容器网络连通性
docker exec hmall ping mysql

完整部署流程建议:

  1. 创建网络 `hmall-net`
  2. 启动 MySQL 容器(自动初始化数据库)
  3. 构建 Java 应用镜像
  4. 启动 Java 容器(连接到同一网络)
  5. 部署 Nginx 作为前端代理

> **重要提示**:
> - 所有容器必须使用 `--network hmall-net` 加入同一网络
> - Java 应用中数据库连接地址应使用容器名(如 `jdbc:mysql://mysql:3306/db`)
> - 挂载卷使用绝对路径(`$PWD` 或完整路径),避免权限问题
> - 容器启动后立即检查日志:`docker logs -f [容器名]`

http://www.dtcms.com/a/268689.html

相关文章:

  • 可扩展 Redis 查询引擎的最佳实践
  • 开源鸿蒙(OpenHarmony)桌面版全面解析:架构适配、设备支持与开发实战
  • T01_神经网络
  • Linux 77 FTP
  • OpenCV 人脸分析------面部关键点检测类cv::face::FacemarkLBF
  • 【Java面试】如何保证Java应用的安全性
  • Node.js 后台系统 - 基本增删改查实现
  • 【Python】类中的参数传递
  • HBuilder Cli创建的uniapp项目,引入unoCss插件
  • 在本地部署mcp服务器实现自然语言操作mysql数据库,轻松实现数据表的增~ 删~ 改~ 查~
  • 七牛云Java开发面试题及参考答案
  • Unity接入Steamworks.NET实现通信功能
  • C#和SQL Server连接常用通讯方式
  • MsSql 其他(2)
  • Excel 的多线程特性
  • JavaWeb笔记07
  • LLM(大语言模型)能识别图像的核心原因:图像和文本记性特征识别且对其
  • [C语言笔记]11、结构体
  • 实用机器学习
  • 算法————模拟算法
  • Oracle实用参考(13)——Oracle for Linux PSR及PSU升级
  • C++系列(七):深度探索C++内存 --- 分区、堆栈、new/delete与高效编程实践
  • 动态规划递归与迭代实现对比
  • Data Agent:从技术本质到企业级实践的全景解析
  • LeetCode Hot 100 除自身以外数组的乘积
  • 16th Day| 222.完全二叉树的节点个数,110.平衡二叉树,257.二叉树的所有路径,404.左叶子之和
  • 分布式推客系统架构设计:从微服务到高性能计算的实践路径
  • WebView 中 Cookie 丢失怎么办?跨域状态不同步的调试与修复经验
  • 6,Receiving Messages:@KafkaListener Annotation
  • 诊断工程师进阶篇 --- 车载诊断怎么与时俱进?