[linux]docker项目部署
部署后端
- 使用idea打开资料中的hmall项目代码, 打包得到jav包
- 使用maven进行打包, 不需要单元测试
- 得到项目jav包
- 把自定义镜像文件和项目jar包上传至root目录
- 构建镜像
- 运行镜像
部署前端
- 需求:创建一个新的nginx容器,将课前资料提供的nginx.conf、html目录与容器挂载
- 把html目录和nginx配置文件上传到root/nginx目录
- 启动新的nginx镜像服务
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network heima \
nginx
- 访问服务, 查看日志
DockerCompose
Docker Compose通过一个单独的docker-compose.ym模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。
docker命令和 docker-compose文件描述的都是容器的信息, 只是语法不同
docker-compose文件描述信息解读
// 描述命令文件的版本
version: "3.8"
services:
//容器列表
mysql:
// 镜像名称
image: mysql
// 容器名称
container_name: mysql
// 端口映射
ports:
- "3306:3306"
// 环境变量
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
// 数据卷挂载
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
// 网络
networks:
- hm-net
hmall:
// 自动构建镜像
build:
// 自定义镜像所在目录
// .表示当前目录
context: .
// 文件名
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
// 依赖项
// mysql容器创建完成后再创建此容器
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
// 自动创建网络
networks:
// 网络标识
hm-net:
// 网络名字
name: hmall
docker compose的命令格式
- 如果文件在当前目录,且文件名是docker-compose.yml, 就可以省略
- project名称如果省略, 默认就是root
- 如果需要后台运行, 可以跟上 -d 参数
实际操作
- 文件准备: 把docker compose文件上传到root目录
- 修改nginx.conf文件, 要把请求代理到java容器
- 清理之前的容器
- 清理之前的镜像
- 使用docker compose命令部署项目
- 项目部署成功