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

DockerCompose快速部署Java项目、nginx前端和mysql数据库到centos虚拟机

简介:整理自:SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)课程的飞书文档。

DockerCompose介绍

大家可以看到,我们部署一个简单的java项目,其中包含3个容器:

  • MySQL
  • Nginx
  • Java项目
    而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止3个。如果还像之前那样手动的逐一部署,就太麻烦了。

而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 **docker-compose.yml 模板文件(YAML 格式)**来定义一组相关联的应用容器。
docker-compose.yml文件的基本语法可以参考官方文档:
https://docs.docker.com/reference/compose-file/legacy-versions/
在这里插入图片描述

手动部署与DockerCompose部署对比

在这里插入图片描述

DockerCompose常见命令

在这里插入图片描述
在这里插入图片描述

DockerCompose部署步骤

1、首先保证虚拟机的root目录下有如下文件及对应的配置文件
放入哪些文件见文章:https://blog.csdn.net/weixin_62818371/article/details/143089135
在这里插入图片描述
2、将docker-compose.yml部署文件放入虚拟机的root目录下
注意点:
①、container_name: hm:Java应用容器名需要与nginx的nginx.conf配置里的容器名保持一致。

networks:hm-net:name: hmall

②、hm-net 是一个网络的标识符,用于在 Docker Compose 文件中引用和管理这个网络;这个标识符是局部的,仅在当前 Docker Compose 文件中有效。
③、name: hmall 是这个网络在 Docker 主机上的 实际名称。当 Docker 创建这个网络时,它将被命名为 hmall;这个名称是全局的,影响到 Docker 主机上网络的管理和识别。

docker-compose.yml示例文件:

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall

3、DockerCompose一键部署
在执行命令去需要把会产生冲突的所有镜像和容器清除

# 启动所有, -d 参数是后台启动
docker compose up -d
# 查看容器
docker compose ps

如果要撤回一键部署,执行以下命令:

# 停止并移除所有容器、网络
docker compose down

4、浏览器测试是否成功
测试具体操作见文章:https://blog.csdn.net/weixin_62818371/article/details/143089135


http://www.mrgr.cn/news/54759.html

相关文章:

  • FineReport 分页
  • 【VUE安装本地自定义capacitor插件以及打包成安卓APK过程】
  • 在数据库中,`SELECT`, `FROM`, `JOIN`, `ON`, 和 `WHERE`各自的作用
  • Linux——进程基础
  • 【云从】九、CDN加速
  • 齿轮都在汽车工程中哪些地方被用到?
  • ES6 中函数参数的默认值
  • protobuf 未知字段的获取
  • gc cr/current block 2-way
  • 【MySQL】内外连接
  • 2024年深圳福田区第十二届职工技能大比武职业技能竞赛圆满收官
  • Vue-router 路由守卫执行流程图
  • 光纤光学的基本方程
  • 【MySQL】:库的操作
  • 【力扣打卡系列】滑动窗口与双指针(接雨水)
  • 【Maven】一篇带你了解Maven项目管理工具
  • int argc, char *argv[]
  • 6.C++经典实例-计算给定范围内的素数(质数)
  • SLACC Simion-based Language Agnostic Code Clones
  • 基于STM32的超声波流量计设计
  • python编译问题 当你编译第一个python程序时可能出现如下错误
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-11
  • Tornado简单使用
  • JavaScript 新手必知的基本概念
  • 深入了解 Flannel(3):vxlan在flannel中的作用
  • 【Linux系统编程】冯诺依曼体系结构与操作系统