赞
踩
目录
参考Docker部署RuoYi-Vue前后端分离项目大家可以看到,我们部署一个简单的java项目,其中包含4个容器:
MySQL
Redis
Java项目
而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止4个。如果还像之前那样手动的逐一部署,就太麻烦了。
而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。
感谢黑马程序员!!!
首先我们要安装docker环境,然后拉取mysql、nginx、redis镜像,然后在/root目录下面创建项目jar包和制作项目镜像的Dockerfile文件。(安装docker、拉取镜像、打jar包以及Dockerfile都在Docker部署RuoYi-Vue前后端分离项目这篇文章中)
我们要知道数据卷的概念以及用法,参考2.2 数据卷。
然后我们创建MySQL和Nginx容器中文件要挂载的文件夹目录:这两个文件夹我放在/root目录下了
把mysql的配置文件放到conf目录下,数据库sql文件放到init目录下,挂载的目的第一是方便管理,第二是不会因为移除mysql容器而丢失数据库里面的资源;
因为我们这个项目sql文件中没有创建数据库的指令,所以我们要创建数据库容器以及设置好挂载然后远程连接数据库创建ry-vue数据库然后导入sql文件,完成后删除mysql容器。
- # 创建mysql容器并挂载
- docker run -d \
- --name mysql \
- -p 3306:3306 \
- -e TZ=Asia/Shanghai \
- -e MYSQL_ROOT_PASSWORD=123 \
- -v ./mysql/data:/var/lib/mysql \
- -v ./mysql/conf:/etc/mysql/conf.d \
- -v ./mysql/init:/docker-entrypoint-initdb.d \
- --network hmall
- mysql
-
- #删除mysql容器,-f是强制删除
- docker rm -f mysql
把前端项目打包的文件放到我们nginx数据卷挂载的/root/nginx/html目录下
如果有配置文件就直接放到nginx目录下,然后把docker-compose.yml文件中下面代码打开:
# - "/root/nginx/nginx.conf:/etc/nginx/nginx.conf"
然后就是最关键的docker-compose.yml文件的编写,详情请参考3.3 DockerCompose。
- version: "3.8"
-
- services:
- mysql:
- image: mysql
- container_name: mysql
- ports:
- - "3306:3306"
- environment:
- TZ: Asia/Shanghai
- MYSQL_ROOT_PASSWORD: 123
- volumes:
- - "/root/mysql/conf:/etc/mysql/conf.d"
- - "/root/mysql/data:/var/lib/mysql"
- - "/root/mysql/init:/docker-entrypoint-initdb.d"
- networks:
- - ry-net
- ruoyi-vue:
- build:
- context: /root/ruoyi-vue
- dockerfile: Dockerfile
- container_name: ruoyi-vue
- ports:
- - "8080:8080"
- networks:
- - ry-net
- depends_on:
- - mysql
- - redis
- nginx:
- image: nginx
- container_name: nginx
- ports:
- - "80:80"
- volumes:
- # - "/root/nginx/nginx.conf:/etc/nginx/nginx.conf"
- - "/root/nginx/html:/usr/share/nginx/html"
- depends_on:
- - ruoyi-vue
- networks:
- - ry-net
- redis:
- image: redis
- container_name: redis
- ports:
- - "6379:6379"
- networks:
- - ry-net
- networks:
- ry-net:
- name: ruoyinet
因为我们docker-compose.yml文件中的配置用的都是绝对路径,所以这个文件放放到哪里都可以,建议放到项目的文件夹里面方便管理。
一切准备就绪后直接输入命令启动:
- # 启动所有容器, -d 参数是后台启动
- docker compose up -d
出现下图我们就完成所有的部署了!
现在可以通过IP+端口来访问我们的前后端分离项目了,任何前后端分离的项目部署都是相通的,快来完成一个属于你的前后端分离项目的部署吧!
关闭项目,直接输入:
- # 停止并移除所有容器、网络
- docker compose down
出现下图我们就停止并移除所有容器、网络了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。