docker部署若依前后端分离版

要想部署若依,我用的是3.8.6版本的若依版本,当你用若依进行二次开发,开发完后,想把若依部署在服务器上

搞懂部署若依需要多少容器

若以前后端分离版有后端,前端,要用到mysql数据库,用到redis,所以要创建四个容器

打包后端工程

项目开发完后想部署,要把新项目打包,后端项目打包,我是用idea完成项目二次开发的,在idea中打包后端工程,在打包工程前修改一下数据,在ruoyi-admin模块中的配置文件application.yml中

修改一下连接redis的参数,地址修改成你要创建的redis的容器的名,我等下要创建redis容器名字是redis

密码设置成你的密码。端口一般不会去改,是6379

这是连接mysql数据库的参数,把url中的

jdbc:mysql://mysql:3306/ruoyi?

第二个mysql改成你要创建的mysql容器的名字,我等下创建mysql容器的名字是mysql

      jdbc:mysql://localhost:3306/ruoyi?

3306是连接mysql的端口,一般不会去改

3306/ruoyi         后面的ruoyi表示连接的使用mysql的哪个数据库看你把数据放在哪个库,就写那个库 ,把username跟password改成你的数据库的用户名跟密码

还要修改配置

修改文件路径profile的值 ,本来的值是  D:/ruoyi/uploadPath ,你要部署到服务器上,把路径改成

/home/ruoyi/uploadPath

好了,后端要修改的配置就修改好了

要进行把后端项目打包,我是使用maven插件打包的

打开idea右边的maven,打包前双击clean,清理一下数据,清理完后双击package开始打包,等一会后项目就会打包完毕

要是你不用maven插件打包,你可以在项目的bin目录下打开命令行,就是终端

idea下面有个,按就行了会打开终端,在终端输入命令 java -jar ruoyi.jar就行了

注意:若依项目的启动类在ruoyi-admin模块,整个项目运行就是靠ruoyi-admin模块的,所以打包后你会看到每个模块下都会有jar包,我们只需要ruoyi-admin模块下的jar包就好了

好了后端工程就打包好了

打包前端工程

在打包前端工程前修改一下配置

找到ruoyi-ui 这是ruoyi的前端工程,打开ruoyi-ui找到vue.config.js配置文件

在文件中找到

这是若依前端请求的代理转发配置,把target 中的值修改成你要创建后端容器的名,,`http://ruoyi:8080` 我等下创建后端容器的名字是ruoyi。注意地址是由反引号 `  ` 括起来的,8080是后端项目端口号,

没有修改是8080,一般不去修改,前端就改好了,找到ruoyi-ui下的pachage.json脚本文件

找到

是要打包工程,点击build:prod左边的绿色按钮

开始打包前端工程,等一下完成后,就会在ruoyi-ui下会有一个dist文件,里面的文件就打包的文件

创建网络

在创建容器时,创建一个网络,把之后创建的容器都拉进同一个网络下,这样实现不同容器之间的访问就不用输入地址了,输入容器名就可以访问了,所以我前面设置redis,mysql连接地址参数时,把地址名写成redis,mysql,不用写数字

docker network create ruoyi

创建mysql容器

前后端打包好后开始创建容器,创建mysql容器

在linux中输入命令拉取mysql镜像

docker pull mysql

完整写法是,docker pull mysql:5.7    要跟上mysql镜像的版本,不写版本表示拉取的镜像是最新的版本,在root目录下新建一个文件夹mysql里面新建三个文件夹conf,init,data,要挂载文件

执行命令开始创建容器

  • 挂载/root/mysql/data到容器内的/var/lib/mysql目录

  • 挂载/root/mysql/init到容器内的/docker-entrypoint-initdb.d目录(初始化的SQL脚本目录)

  • 挂载/root/mysql/conf到容器内的/etc/mysql/conf.d目录(这个是MySQL配置文件目录)

在init文件夹中放入后端项目的sql文件,容器创建时会自动执行sql语句

在conf中放入mysql的配置文件,自己创建一个文件后缀名是cnf

配置文件内容是
 

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-name-resolve

开始执行命令创建容器,设置mysql的密码,自

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123456 \
  --security-opt seccomp=unconfined \
  -v ./mysql/data:/var/lib/mysql \
  -v ./mysql/conf:/etc/mysql/conf.d \
  -v ./mysql/init:/docker-entrypoint-initdb.d \
  --network ruoyi    \
  mysql

 -e MYSQL_ROOT_PASSWORD=123456   //这是设置mysql的密码

--name mysql      //这是设置mysql容器的名

--security-opt seccomp=unconfined //表示这是docker认证,这是Docker的Seccomp安全限制问题,在启动的命令后面添加 --security-opt seccomp=unconfined 忽略安全验证

--network ruoyi     //容器加入ruoyi网络

mysql容器创建完成

创建redis容器

开始创建redis容器,在root目录下新建一个文件夹redis,在里面新建conf ,data目录

创建容器要挂载文件

挂载/root/redis/conf/redis.conf到容器内的/usr/local/etc/redis/redis.conf

挂载/root/redis/data到容器内的/data

在conf文件夹中新建一个配置文件redis.conf,后缀名是conf就行

里面的内容

#表示所有主机能访问redis
bind 0.0.0.0
#指定redis的端口号
port 6379
#指定redis的密码
requirepass 123456

执行命令创建redis容器

docker run  \
--name redis \
-p 6379:6379 \
-v /root/redis/conf:/usr/local/etc/redis \
-v /root/redis/data:/data \
-d \
--network ruoyi   \
redis \
redis-server /usr/local/etc/redis/redis.conf

--name    redis   //这是创建的redis容器的名

--network  ruoyi  //把创建的redis容器加入ruoyi容器

redis容器创建好了

创建nginx容器

nginx容器时部署前端的容器

在root目录下新建一个目录nginx,在里面新建html,conf两个目录

创建容器要挂载文件

  • /root/nginx/conf/nginx.conf挂载到/etc/nginx/nginx.conf

  • /root/nginx/html挂载到/usr/share/nginx/html

在conf中新建一个配置文件nginx.conf,这是nginx的配置文件,

我的配置文件内容时

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;
		charset utf-8;

		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://localhost:8080/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
proxy_pass http://localhost:8080/

这是指定了后端项目的地址,改成后端容器的名,等下创建的后端容器名是ruoyi

proxy_pass http://ruoyi:8080/

在html文件夹中把刚才前端打包好的文件dist中的文件全部复制进html目录中

输入命令创建nginx容器

docker run -d \
  --name nginx \
  -p 80:80 \
  -v /root/nginx/html:/usr/share/nginx/html \
  -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  --network ruoyi  \
  nginx

--network  ruoyi    //把创建的nginx容器加入ruoyi网络

创建部署后端的容器

创建后端容器要自己创建镜像,在root目录中新建一个一个Dockerfile文件,文件名字就叫Dockerfile,没有后缀就是Dockerfile,是用来创建镜像的。文件内容是

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 拷贝jar包
COPY ruoyi-admin.jar /home/ruoyi/app.jar
# 入口
ENTRYPOINT ["java", "-jar", "app.jar"]

COPY ruoyi-admin.jar /home/ruoyi/app.jar   //表示把宿主机就是服务器ruoyi-admin.jar 复制到 容器中的   /home/ruoyi/app.jar中,ruoyi-admin.jar是你后端项目的jar包的位置,我把jar包放在root目录中,可以这样写,你可以

这样写

COPY /root/ruoyi-admin.jar /home/ruoyi/app.jar

注意:文件别的内容不要改,就是这样

开始制作java后端项目的镜像

执行命令

docker build -t ruoyi:1.0 /root/Dockerfile

ruoyi:1.0   //表示镜像名是ruoyi,版本是1.0

制作好镜像后,开始创建容器,要挂载目录,在root目录下新建一个文件夹ruoyi,在ruoyi文件中新建一个文件夹iploadPath

要挂载 /root/ruoyi/uploadPath到容器的目录 /home/ruoyi/uploadPath

输入命令执行

 docker run -d \
 --name ruoyi  \
 -p 8080:8080  \
 -v /root/ruoyi/uploadPath:/home/ruoyi/uploadPath \
 --network \
 ruoyi  \
 ruoyi:1.0

--name ruoyi    //创建的容器名是ruoyi

--network  ruoyi   //把创建的容器ruoyi加入ruoyi网络

这时容器就全部创建好了,打开浏览器输入服务器的地址就可以访问了

至此,这就是docker 部署若依前后端分离版的内容了,谢谢你的观看

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker 是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的容器,以便在任何环境中运行。使用 Docker 部署前后端分离项目可以提高部署的可靠性和可重复性,并且可以更方便地进行测试和部署。 以下是部署前后端分离项目的一般步骤: 1. 编写 Dockerfile 文件 Dockerfile 文件是用于构建 Docker 镜像的脚本文件。在 Dockerfile 中指定项目所需的软件和依赖项,并将它们打包成一个镜像。 2. 在 Docker 中构建镜像 使用 Docker 命令行工具构建 Docker 镜像。首先需要将 Dockerfile 文件上传到 Docker 宿主机上,然后在 Docker 宿主机上执行构建命令。构建命令通常包括指定 Dockerfile 的路径和镜像的名称。 3. 启动容器 使用 Docker 命令行工具启动 Docker 容器。启动命令通常包括指定容器使用的镜像、需要映射的端口、需要挂载的目录等参数。 4. 配置前端项目 将前端项目打包成静态资源,并将其复制到 Docker 容器中。 5. 配置后端项目 将后端项目打包成可执行文件,并将其复制到 Docker 容器中。 6. 运行项目 在 Docker 容器中启动前端和后端项目。通常需要使用不同的命令来启动前端和后端项目。 7. 测试项目 在浏览器中访问前端项目,或者使用 curl 命令测试后端 API 接口,测试项目是否正常运行。 总体来说,使用 Docker 部署前后端分离项目能够提高部署的可靠性和可重复性,同时也能够更方便地进行测试和部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值