前面的博客介绍了使用 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
配置
其中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-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)浏览器访问测试
可以正常显示页面,表名环境搭建成功。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/87930.html
赞 (0)
在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。
导读:本篇文章讲解 【效能平台】测试用例管理模块——获取用例列表数据、查看用例详情数据、增加以及更新用例、删除用例相关功能开发(十),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文
Python
2023年3月5日
000
前提 最近在生产环境刚好遇到了延时任务的场景,调研了一下目前主流的方案,分析了一下优劣并且敲定了最终的方案。这篇文章记录了调研的过程,以及初步方案的实现。 候选方案对比 下面是想到…
2022年10月6日
006
一、Pulsar 介绍 Apache Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离…
2022年5月19日
000