赞
踩
目录
前面的博客介绍了使用 Docker 部署前后端分离项目:使用Docker部署前后端分离项目
接下来介绍如何使用 Docker Compose部署前后端分离项目,依旧以若依项目为例。
- [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
- [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
- [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
在 /home 目录下新建目录 ruoyi2,作为工作目录。
[root@zy-host home]# mkdir ruoyi2
- 其中
db目录
存放ruoyi数据库脚本
- 其中
jar目录
存放打包好的jar应用文件
- 其中
conf目录
存放redis.conf
和nginx.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
修改后台配置文件,修改MySQL地址为和Redis地址为 云服务器IP
package 打包,将打好的jar包上传至工作目录下的 jar 目录中:
前台打 dist 包,上传至工作目录的 html 目录下:
- # 构建生产环境
- npm run build:prod
在sql文件头部添加:SET NAMES 'utf8'; 防止乱码,然后将sql文件上传至工作目录的 db 目录下:
mysql-dockerfile 文件内容如下:
- # 基础镜像
- FROM mysql:5.7
- # author
- MAINTAINER ruoyi
-
- # 执行sql脚本
- ADD ./db/*.sql /docker-entrypoint-initdb.d/
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
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
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"]
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

[root@zy-host ruoyi2]# docker-compose build
[root@zy-host ruoyi2]# docker-compose up -d
- [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
可以正常显示页面,表名环境搭建成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。