使用Docker Compose一键部署前后端分离项目
创始人
2024-05-08 20:44:28
0

目录

一、安装Docker和docker Compose

(1)Docker安装

(2)Docker Compose安装

(3)查看版本信息

二、准备工作

1. 新建工作目录

2. 工作目录结构

3. 后台打包

4. 前台打包

5. 数据库文件上传

6. 编写Dockerfile

(1)mysql-dockerfile

(2)nginx-dockerfile

(3)redis-dockerfile

(4)ruoyi-dockerfile

7. 编写 docker-compose.yml 文件

8. 构建并启动

(1)构建docker服务

(2)启动docker容器

(3)查看容器

(4)浏览器访问测试


前面的博客介绍了使用 Docker 部署前后端分离项目:使用Docker部署前后端分离项目

接下来介绍如何使用 Docker Compose部署前后端分离项目,依旧以若依项目为例。 

一、安装Docker和docker Compose

(1)Docker安装

[root@zy-host /]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@zy-host /]# yum install docker-ce docker-ce-cli containerd.io

(2)Docker Compose安装

[root@zy-host home]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@zy-host home]# chmod +x /usr/local/bin/docker-compose

(3)查看版本信息

[root@zy-host home]# docker --version
Docker version 20.10.22, build 3a2c30b
[root@zy-host home]# docker-compose --version
docker-compose version 1.25.1, build a82fef07

二、准备工作

这里可以参考若依官方文档:集成docker实现一键部署| RuoYi

1. 新建工作目录

在 /home 目录下新建目录 ruoyi2,作为工作目录。

[root@zy-host home]# mkdir ruoyi2

2. 工作目录结构

  • 其中db目录存放ruoyi数据库脚本
  • 其中jar目录存放打包好的jar应用文件
  • 其中conf目录存放redis.confnginx.conf配置
  • 其中html\dist目录存放打包好的静态页面文件
  • 数据库mysql地址需要修改成ruoyi-mysql
  • 缓存redis地址需要修改成ruoyi-redis
  • 数据库脚本头部需要添加SET NAMES 'utf8';(防止乱码)
[root@zy-host ruoyi2]# tree ./
./
├── conf
│   ├── nginx.conf
│   └── redis.conf
├── db
├── docker-compose.yml
├── html
│   └── dist
├── jar
├── mysql-dockerfile
├── nginx-dockerfile
├── redis-dockerfile
└── ruoyi-dockerfile

nginx.conf文件内容:

[root@zy-host conf]# cat nginx.conf 
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   /home/ruoyi/projects/ruoyi-ui;try_files $uri $uri/ /index.html;index  index.html index.htm;}location /prod-api/{proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ruoyi-server:8080/;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

 redis.conf文件内容:

# requirepass 123456

3. 后台打包

修改后台配置文件,修改MySQL地址为和Redis地址为 云服务器IP

  package 打包,将打好的jar包上传至工作目录下的 jar 目录中:

 4. 前台打包

前台打 dist 包,上传至工作目录的 html 目录下:

# 构建生产环境
npm run build:prod

 5. 数据库文件上传

        在sql文件头部添加:SET NAMES 'utf8'; 防止乱码,然后将sql文件上传至工作目录的 db 目录下:

 

 6. 编写Dockerfile

(1)mysql-dockerfile

mysql-dockerfile 文件内容如下:

# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/

(2)nginx-dockerfile

nginx-dockerfile 文件内容如下:

在容器内创建 /home/ruoyi/projects/ruoyi-ui目录,并将该目录与宿主机挂载。

# 基础镜像
FROM nginx
# author
MAINTAINER ruoyi# 挂载目录
VOLUME /home/ruoyi/projects/ruoyi-ui
# 创建目录
RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
# 指定路径
WORKDIR /home/ruoyi/projects/ruoyi-ui
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/ruoyi/projects/ruoyi-ui

(3)redis-dockerfile

redis-dockerfile文件内容如下:

# 基础镜像
FROM redis
# author
MAINTAINER ruoyi# 挂载目录
VOLUME /home/ruoyi/redis
# 创建目录
RUN mkdir -p /home/ruoyi/redis
# 指定路径
WORKDIR /home/ruoyi/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf

(4)ruoyi-dockerfile

ruoyi-dockerfile文件内容如下:

# 基础镜像
FROM java:8
# author
MAINTAINER ruoyi# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 复制jar文件到路径
COPY ./jar/*.jar /home/ruoyi/ruoyi.jar
# 启动应用
ENTRYPOINT ["java","-jar","ruoyi.jar"]

7. 编写 docker-compose.yml 文件

docker-compose.yml 文件内容如下:

version : '3'
services:ruoyi-mysql:container_name: ruoyi-mysqlimage: mysql:5.7build:context: .dockerfile: mysql-dockerfileports:- "3306:3306"volumes:- ./mysql/conf:/etc/mysql/conf.d- ./mysql/logs:/logs- ./mysql/data:/var/lib/mysqlcommand: ['mysqld','--innodb-buffer-pool-size=80M','--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00','--lower-case-table-names=1']environment:MYSQL_DATABASE: 'ry-vue'MYSQL_ROOT_PASSWORD: zhangyin  #数据库root用户密码ruoyi-redis:container_name: ruoyi-redisimage: redisbuild:context: .dockerfile: redis-dockerfileports:- "6379:6379"volumes:- ./conf/redis.conf:/home/ruoyi/redis/redis.conf- ./redis/data:/datacommand: redis-server /home/ruoyi/redis/redis.confruoyi-nginx:container_name: ruoyi-nginximage: nginxbuild:context: .dockerfile: nginx-dockerfileports:- "80:80"volumes:- ./html/dist:/home/ruoyi/projects/ruoyi-ui- ./conf/nginx.conf:/etc/nginx/nginx.conf- ./nginx/logs:/var/log/nginx- ./nginx/conf.d:/etc/nginx/conf.ddepends_on:- ruoyi-serverlinks:- ruoyi-serverruoyi-server:container_name: ruoyi-serverbuild:context: .dockerfile: ruoyi-dockerfileports:- "8080:8080"volumes:- ./ruoyi/logs:/home/ruoyi/logs- ./ruoyi/uploadPath:/home/ruoyi/uploadPathdepends_on:- ruoyi-mysql- ruoyi-redislinks:- ruoyi-mysql- ruoyi-redis

8. 构建并启动

(1)构建docker服务

[root@zy-host ruoyi2]# docker-compose build

(2)启动docker容器

[root@zy-host ruoyi2]# docker-compose up -d

(3)查看容器

[root@zy-host ruoyi2]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
c61cd8b2b476   nginx                 "/docker-entrypoint.…"   47 seconds ago   Up 45 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp                      ruoyi-nginx
c39f8deda702   ruoyi2_ruoyi-server   "java -jar ruoyi.jar"    48 seconds ago   Up 46 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              ruoyi-server
3d5daf878fbb   redis                 "docker-entrypoint.s…"   49 seconds ago   Up 48 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              ruoyi-redis
58568121a480   mysql:5.7             "docker-entrypoint.s…"   49 seconds ago   Up 48 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   ruoyi-mysql

(4)浏览器访问测试

可以正常显示页面,表名环境搭建成功。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...