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
完整部署流程建议:
- 创建网络 `hmall-net`
- 启动 MySQL 容器(自动初始化数据库)
- 构建 Java 应用镜像
- 启动 Java 容器(连接到同一网络)
- 部署 Nginx 作为前端代理
> **重要提示**:
> - 所有容器必须使用 `--network hmall-net` 加入同一网络
> - Java 应用中数据库连接地址应使用容器名(如 `jdbc:mysql://mysql:3306/db`)
> - 挂载卷使用绝对路径(`$PWD` 或完整路径),避免权限问题
> - 容器启动后立即检查日志:`docker logs -f [容器名]`