当前位置:   article > 正文

使用Docker Compose一键部署前后端分离项目_dockercompose部署前后端项目

dockercompose部署前后端项目

目录

一、安装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安装

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

(2)Docker Compose安装

  1. [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
  2. [root@zy-host home]# chmod +x /usr/local/bin/docker-compose

(3)查看版本信息

  1. [root@zy-host home]# docker --version
  2. Docker version 20.10.22, build 3a2c30b
  3. [root@zy-host home]# docker-compose --version
  4. 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';(防止乱码)
  1. [root@zy-host ruoyi2]# tree ./
  2. ./
  3. ├── conf
  4. │   ├── nginx.conf
  5. │   └── redis.conf
  6. ├── db
  7. ├── docker-compose.yml
  8. ├── html
  9. │   └── dist
  10. ├── jar
  11. ├── mysql-dockerfile
  12. ├── nginx-dockerfile
  13. ├── redis-dockerfile
  14. └── ruoyi-dockerfile

nginx.conf文件内容:

  1. [root@zy-host conf]# cat nginx.conf
  2. worker_processes 1;
  3. events {
  4. worker_connections 1024;
  5. }
  6. http {
  7. include mime.types;
  8. default_type application/octet-stream;
  9. sendfile on;
  10. keepalive_timeout 65;
  11. server {
  12. listen 80;
  13. server_name localhost;
  14. location / {
  15. root /home/ruoyi/projects/ruoyi-ui;
  16. try_files $uri $uri/ /index.html;
  17. index index.html index.htm;
  18. }
  19. location /prod-api/{
  20. proxy_set_header Host $http_host;
  21. proxy_set_header X-Real-IP $remote_addr;
  22. proxy_set_header REMOTE-HOST $remote_addr;
  23. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  24. proxy_pass http://ruoyi-server:8080/;
  25. }
  26. error_page 500 502 503 504 /50x.html;
  27. location = /50x.html {
  28. root html;
  29. }
  30. }
  31. }

 redis.conf文件内容:

# requirepass 123456

3. 后台打包

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

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

 4. 前台打包

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

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

 5. 数据库文件上传

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

 

 6. 编写Dockerfile

(1)mysql-dockerfile

mysql-dockerfile 文件内容如下:

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

(2)nginx-dockerfile

nginx-dockerfile 文件内容如下:

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

  1. # 基础镜像
  2. FROM nginx
  3. # author
  4. MAINTAINER ruoyi
  5. # 挂载目录
  6. VOLUME /home/ruoyi/projects/ruoyi-ui
  7. # 创建目录
  8. RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
  9. # 指定路径
  10. WORKDIR /home/ruoyi/projects/ruoyi-ui
  11. # 复制conf文件到路径
  12. COPY ./conf/nginx.conf /etc/nginx/nginx.conf
  13. # 复制html文件到路径
  14. COPY ./html/dist /home/ruoyi/projects/ruoyi-ui

(3)redis-dockerfile

redis-dockerfile文件内容如下:

  1. # 基础镜像
  2. FROM redis
  3. # author
  4. MAINTAINER ruoyi
  5. # 挂载目录
  6. VOLUME /home/ruoyi/redis
  7. # 创建目录
  8. RUN mkdir -p /home/ruoyi/redis
  9. # 指定路径
  10. WORKDIR /home/ruoyi/redis
  11. # 复制conf文件到路径
  12. COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf

(4)ruoyi-dockerfile

ruoyi-dockerfile文件内容如下:

  1. # 基础镜像
  2. FROM java:8
  3. # author
  4. MAINTAINER ruoyi
  5. # 挂载目录
  6. VOLUME /home/ruoyi
  7. # 创建目录
  8. RUN mkdir -p /home/ruoyi
  9. # 指定路径
  10. WORKDIR /home/ruoyi
  11. # 复制jar文件到路径
  12. COPY ./jar/*.jar /home/ruoyi/ruoyi.jar
  13. # 启动应用
  14. ENTRYPOINT ["java","-jar","ruoyi.jar"]

7. 编写 docker-compose.yml 文件

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

  1. version : '3'
  2. services:
  3. ruoyi-mysql:
  4. container_name: ruoyi-mysql
  5. image: mysql:5.7
  6. build:
  7. context: .
  8. dockerfile: mysql-dockerfile
  9. ports:
  10. - "3306:3306"
  11. volumes:
  12. - ./mysql/conf:/etc/mysql/conf.d
  13. - ./mysql/logs:/logs
  14. - ./mysql/data:/var/lib/mysql
  15. command: [
  16. 'mysqld',
  17. '--innodb-buffer-pool-size=80M',
  18. '--character-set-server=utf8mb4',
  19. '--collation-server=utf8mb4_unicode_ci',
  20. '--default-time-zone=+8:00',
  21. '--lower-case-table-names=1'
  22. ]
  23. environment:
  24. MYSQL_DATABASE: 'ry-vue'
  25. MYSQL_ROOT_PASSWORD: zhangyin #数据库root用户密码
  26. ruoyi-redis:
  27. container_name: ruoyi-redis
  28. image: redis
  29. build:
  30. context: .
  31. dockerfile: redis-dockerfile
  32. ports:
  33. - "6379:6379"
  34. volumes:
  35. - ./conf/redis.conf:/home/ruoyi/redis/redis.conf
  36. - ./redis/data:/data
  37. command: redis-server /home/ruoyi/redis/redis.conf
  38. ruoyi-nginx:
  39. container_name: ruoyi-nginx
  40. image: nginx
  41. build:
  42. context: .
  43. dockerfile: nginx-dockerfile
  44. ports:
  45. - "80:80"
  46. volumes:
  47. - ./html/dist:/home/ruoyi/projects/ruoyi-ui
  48. - ./conf/nginx.conf:/etc/nginx/nginx.conf
  49. - ./nginx/logs:/var/log/nginx
  50. - ./nginx/conf.d:/etc/nginx/conf.d
  51. depends_on:
  52. - ruoyi-server
  53. links:
  54. - ruoyi-server
  55. ruoyi-server:
  56. container_name: ruoyi-server
  57. build:
  58. context: .
  59. dockerfile: ruoyi-dockerfile
  60. ports:
  61. - "8080:8080"
  62. volumes:
  63. - ./ruoyi/logs:/home/ruoyi/logs
  64. - ./ruoyi/uploadPath:/home/ruoyi/uploadPath
  65. depends_on:
  66. - ruoyi-mysql
  67. - ruoyi-redis
  68. links:
  69. - ruoyi-mysql
  70. - ruoyi-redis

8. 构建并启动

(1)构建docker服务

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

(2)启动docker容器

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

(3)查看容器

  1. [root@zy-host ruoyi2]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. c61cd8b2b476 nginx "/docker-entrypoint.…" 47 seconds ago Up 45 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp ruoyi-nginx
  4. 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
  5. 3d5daf878fbb redis "docker-entrypoint.s…" 49 seconds ago Up 48 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp ruoyi-redis
  6. 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)浏览器访问测试

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/991261
推荐阅读
相关标签
  

闽ICP备14008679号