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配置里的容器名保持一致。

bash 复制代码
networks:
        hm-net:
           name: hmall

②、hm-net 是一个网络的标识符,用于在 Docker Compose 文件中引用和管理这个网络;这个标识符是局部的,仅在当前 Docker Compose 文件中有效。

③、name: hmall 是这个网络在 Docker 主机上的 实际名称。当 Docker 创建这个网络时,它将被命名为 hmall;这个名称是全局的,影响到 Docker 主机上网络的管理和识别。
docker-compose.yml示例文件:

bash 复制代码
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: hm
    ports:
      - "8080:8080"
    networks:
      - hm-net
    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

3、DockerCompose一键部署

在执行命令去需要把会产生冲突的所有镜像和容器清除

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

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

bash 复制代码
# 停止并移除所有容器、网络
docker compose down

4、浏览器测试是否成功

测试具体操作见文章:https://blog.csdn.net/weixin_62818371/article/details/143089135

相关推荐
马尚道11 分钟前
Java高手速成--吃透源码+手写组件+定制开发教程
java
韩立学长13 分钟前
【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
数据库·spring boot
我命由我1234516 分钟前
Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
java·spring boot·spring·spring cloud·微服务·eureka·java-ee
MetaverseMan20 分钟前
Java Spring 框架的`@Autowired` 注解 以及依赖注入分析
java·开发语言·spring
迎風吹頭髮20 分钟前
Linux服务器编程实践58-getnameinfo函数:通过socket地址获取主机名与服务名
开发语言·数据库·php
一吃就胖的26 分钟前
【给服务器安装服务器安装nacos】
java·运维·服务器
christine-rr33 分钟前
linux常用命令——其他
linux·服务器·网络·数据库·redis·ubuntu
码住懒羊羊38 分钟前
【C++】stack|queue|deque
java·开发语言·c++
hdsoft_huge40 分钟前
第六章 Kettle(PDI)解锁脚本组件:数据处理的可编程利器
java·大数据·etl
一只专注api接口开发的技术猿1 小时前
容器化与调度:使用 Docker 与 K8s 管理分布式淘宝商品数据采集任务
开发语言·前端·数据库