Docker部署若依系统

花了三天的时间终于研究出来如何通过docker容器把若依这个开源项目(前后端分离版)部署到服务器上(本地虚拟机上跑的一个linux系统),刚开始使用war包的形式部署,发现后端怎么也访问不到,后来又改成jar包形式部署。

用到了mysql容器,redis容器,nginx容器,若依后端打包成的容器,暂时没有用到docker-compose把所有的东西集成一个镜像,直接一键部署,到后面再学习。

首先整体看一下整个目录结构

没有展开前

 展开后

 废话不多说,直接开整!!!!

第一步:首先在服务器上搭建整个文件结构

我是在服务器上的root目录下新建一个ruoyi文件夹,然后进入ruoyi文件夹再新建如下的文件夹

 具体每个文件夹里面新建的文件夹如下

 

 

 第二步:开始拉取镜像并把相关的文件挂载到上面新建的各个目录下

1,首先是mysql

1.1,先新建一个my.cnf文件,把它放到服务器root/ruoyi/mysql/conf里面,这个是数据库的配置文件,内容如下

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
init_connect = 'SET NAMES utf8'
init_connect = 'SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv = /var/lib/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 0

# Custom config should go here
!includedir /etc/mysql/conf.d/

1.2,然后拉取mysql的镜像并创建成容器

docker run -p 3306:3306 --name mysql01 \
-v /root/ruoyi/mysql/log:/var/log/mysql \
-v /root/ruoyi/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /root/ruoyi/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

 查数据库容器是否跑起来

上面要配置你数据库的密码,我指定的mysql版本为5.7,挂载的目录就是上面新建的目录

 拉取镜像并创建容器成功后,在笔记本上用navicate连接一下这个数据库看下是否成功

 应该是没啥问题,然后在这个数据里面新建一个数据库命名为ry-vue,然后把若依系统运行必须的数据导入进去,将那两个SQL文件内容复制到navicate直接执行就可以了

 

 

 2,然后是redis

2.1,新建一个redis.conf配置文件,然后放到root/ruoyi/redis/conf文件路径下

内容如下,它主要用来数据持久化的

appendonly yes

 2.2,拉取redis镜像并创建成容器

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

上面指定了redis的端口,密码没有设置,然后用可视化软件redis-desktop-manager连接一下,看看是否有问题

连接redis成功,就没啥问题了

3,其次是nginx

 由于nginx的配置文件内容比较多,不再通过新建配置文件,自己往里面写配置内容的方式了,改成先把redis镜像拉取下来跑起来容器以后把容器里面redis的配置文件拷贝到对应的挂载目录里,然后再对其内容进行修改,再把nginx容器停止并删除,再把其镜像删除,重新再拉取

3.1,先拉取nginx镜像

docker run --name nginx01 -p 80:80 -d nginx

 容器跑起来后,把里面的配置文件复制出来,这一步要回退到服务器的root目录下执行

docker cp 1bc5078f9e87:/etc/nginx/nginx.conf /root/ruoyi/nginx/conf

执行上面的命令

确定对应目录里面多出一个新的nginx.conf配置文件,然后把刚刚的nginx容器停掉并删除,其对应的镜像也要删除掉。

重新拉取nginx镜像并挂载对应目录

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

第三步:制作后端镜像

1,首先把若依系统的代码修改一下,具体要修改的文件如下

 配置你自己的数据库地址和redis地址以及打包的形式为jar包形式,然后直接打包成jar包放到服务器上root/ruoyi路径下

2,编写dockerFile文件,大致就是后端使用的Java版本,以及后端暴露的端口号

FROM java:8
MAINTAINER bingo
ADD ruoyi-admin.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

 并把这个文件放到和jar包同一路径下,具体如下

 3,开始构建后端镜像,进入到root/ruoyi路径下,执行下面的命令,大致意思就是把当前文件夹下的Dockerfile文件和jar包构建成ruoyi-admin镜像版本为1.0

docker build -t ruoyi-admin:1.0 .

然后开始启动后端容器,启动之前一定要确保redis和mysql运行成功,并把系统运行必须的数据导入到数据库了

docker run -it -d --name ruoyi-admin -p 8080:8080 ruoyi-admin:1.0

到此后端算是部署完成了 

第四步:部署前端页面

1,把系统前端页面打包,然后放到服务器root/ruoyi/nginx/html路径下,其中dist文件夹就是前端打包生成的,这个就不介绍了,自行打包就可以了

 然后修改nginx的配置文件,让我们能够访问到这个前端页面,打开nginx的配置文件,在#gzip on后面添加如下内容

server{
	  listen  80;
	  server_name 172.28.27.110;
	  
	  #charset koi8-r;
	  #access_log logs/host.access.log main;
	  
	  location / {
	       root /usr/share/nginx/html/dist;
		index index.html index.htm;
	       }

	  }

保存以后,重启nginx容器,并访问172.28.27.110:80,出现系统页面表示前端部署成功

2,前后端打通,在nginx的配置文件里面添加如下内容,然后再重启nginx就可以了

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

整个nginx的配置文件内容如下

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    server{
	  listen  80;
	  server_name 172.28.27.110;
	  
	  #charset koi8-r;
	  #access_log logs/host.access.log main;
	  
	  location / {
	       root /usr/share/nginx/html/dist;
		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://172.28.27.110:8080/;
	       }
	  
	}


    include /etc/nginx/conf.d/*.conf;
}

最后访问172.28.27.110:80

 

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值