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

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录前言一、安装Docker和docker Compose二、准备工作1. 新建工作目录2. 工作目录结构3. 后台打包4. 前台打包5. 数据库文件上传6. 编写Dockerfile7. 编写 docker-compose.yml 文件8. 构建并启动补充:YAML文件格式及编写注意事项总结

前言

前面的博客介绍了使用 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.conf和nginx.conf配置其中htmldist目录存放打包好的静态页面文件数据库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

教你使用Docker Compose一键部署前后端分离项目插图

教你使用Docker Compose一键部署前后端分离项目插图1

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

教你使用Docker Compose一键部署前后端分离项目插图2

4. 前台打包

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

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

教你使用Docker Compose一键部署前后端分离项目插图3

5. 数据库文件上传

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

教你使用Docker Compose一键部署前后端分离项目插图4

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-mysql image: mysql:5.7 build: context: . dockerfile: mysql-dockerfile ports: – “3306:3306” volumes: – ./mysql/conf:/etc/mysql/conf.d – ./mysql/logs:/logs – ./mysql/data:/var/lib/mysql command: [ 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-redis image: redis build: context: . dockerfile: redis-dockerfile ports: – “6379:6379” volumes: – ./conf/redis.conf:/home/ruoyi/redis/redis.conf – ./redis/data:/data command: redis-server /home/ruoyi/redis/redis.conf ruoyi-nginx: container_name: ruoyi-nginx image: nginx build: context: . dockerfile: nginx-dockerfile ports: – “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.d depends_on: – ruoyi-server links: – ruoyi-server ruoyi-server: container_name: ruoyi-server build: context: . dockerfile: ruoyi-dockerfile ports: – “8080:8080” volumes: – ./ruoyi/logs:/home/ruoyi/logs – ./ruoyi/uploadPath:/home/ruoyi/uploadPath depends_on: – ruoyi-mysql – ruoyi-redis links: – 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)浏览器访问测试

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

教你使用Docker Compose一键部署前后端分离项目插图5

补充:YAML文件格式及编写注意事项

注:docker-compose使用yaml文件对容器进行描述

YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。

YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。

YAML文件格式注意事项:

1.不支持制表符tab键缩进,需要使用空格缩进

2.通常开头缩进2个空格

3.字符后缩进1个空格,如冒号、逗号、横杆

4.用井号注释

5.如果包含特殊字符用单引号引起来

6.布尔值(true、false、yes、no、on、off)必须用引号括起来,这样分 析器会将他们解释为字符串。

总结

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容