若依项目部署

学习教程:

  • 学习Docker前后端分离项目部署

初步工作:

  1. 创建虚拟机,全都是选择下一步,选择桥接网络,导入centos的.ios文件.

centos官网 https://www.centos.org/download/

  1. 打开命令窗口查看 ip addr 或用 ifconfig 查看网络地址.
3. 使用 vim /etc/ sysconfig/ network- scripts/ ifcfg- eth0 查看ip配置信息
```shell
[root@localhost network-scripts]# ll ifcfg-ens33 # 查看文件权限
-rwxrwxrwx. 1 root root 434 Jun 26 07:53 ifcfg-ens33
[root@localhost network-scripts]# su root # 切换到管理员
[root@localhost network-scripts]# chmod 777 ifcfg-ens33 # 修改文件的权限
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" # 网络接口类型
PROXY_METHOD="none" #
BROWSER_ONLY="no"
BOOTPROTO="static" # 修改为静态ip,有dhcp,none,static
DEFROUTE="yes" 
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes" # 是否支持IPv6
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33" # 网卡的名称
UUID="0310a1ca-3dbf-4d48-9771-5c49342d97e8"
DEVICE="ens33"
ONBOOT="yes" # 开启自动启动网络服务
IPADDR="192.168.1.110"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="114.114.114.114"

这里注意一下网卡的名称 ens33 大多数人的是不一样的,如果新建虚拟机输入 ip addr 报错就到这个文件修改`ONBOOT="yes" 原来一般为no的,其余的倒没有什么影响

项目打包

若依前端项目打包

在这里插入图片描述在命令那里输入以下内容

D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm install 		# 项目构建
D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm run dev		# 运行项目	
D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm run build		# 打包项目

在这里插入图片描述这里注意打包的是时候看一下package.json文件,我的使用npm run build:prod命令进行打包

在这里插入图片描述

打包完成这里生成一个项目目录下生成dist文件

前端打包完成

若依后端项目打包

在这里插入图片描述

修改redis 地址和linux的ip一致

在这里插入图片描述

也是一样修改数据库的配置连接和linux的ip一样

在这里插入图片描述

这里只要打包这个目录就可以了,按照步骤来 先双击运行clean,然后再双击运行package,双击也可以换成第三步运行图标.

打包完成窗口会有打包的jar包的,到此后端打包结束.

下载Docker

[root@localhost tool]# yum install docker # 下载docker容器
[root@localhost tool]# docker --version # 查看docker版本是否安装成功
[root@localhost tool]# systemctl start docker # 重启docker
[root@localhost tool]# sudo vi /etc/docker/daemon.json # 进入该目录安装阿里镜像源docker pull速度更快
{"registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"] } # 该目录下的内容,最好不要有汉字

:wq保存退出,重启docker 重启 systemctl restart docker

Docker拉取Redis

[root@localhost tool]# docker pull redis # Docker拉取Redis
[root@localhost tool]# systemctl start docker # 重启容器
[root@localhost tool]# docker images # 查看有没有redis镜像
[root@localhost tool]# docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes # 运行redis,docker run表示运行的意思,--name redis 表示起个名字叫redis,-p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口,-d 表示以后台服务形式运行redis,redis redis-server --appendonly yes表示开启持久化缓存模式,可以存到硬盘

Docker拉取MySQL

[root@localhost tool]# docker pull mysql:5.7 # Docker拉取MySQL
[root@localhost tool]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7 # MYSQL_ROOT_PASSWORD=root表示root的初始密码mysql:5.7.27表示操作的是mysql的5.7.27版本,没有后面的版本号的话,默认是拉取最新版

在这里插入图片描述

这里启动镜像mysql的时候可以测一下连接是否成功,启动镜像的命令总结在后面.

Docker拉取Nginx

[root@localhost tool]# docker pull nginx # Docker拉取Nginx
[root@localhost tool]# docker images # 这条命令可以加上这些参数-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);--digests :显示镜像的摘要信息;-f :显示满足条件的镜像;--format :指定返回值的模板文件 --no-trunc :显示完整的镜像信息; -q :只显示镜像ID

Docker拉取Docker-Compose

[root@localhost tool]# sudo 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 # 安装Docker-Compose
[root@localhost tool]# sudo chmod +x /usr/local/bin/docker-compose # 添加可执行权限
[root@localhost tool]# docker-compose --version #检测是否安装成功

常使用的几个命令

[root@localhost tool]# systemctl restart docker # 重启容器
[root@localhost tool]# docker ps # 查看正在运行的容器,加 -aq 表示正在运行和没有运行的容器
[root@localhost tool]# docker images # 查看所有的镜像
[root@localhost tool]# docker stop $(docker ps -aq) # 停止全部容器
[root@localhost tool]# docker start $(docker ps -aq) # 启动所有容器
[root@localhost tool]# docker rm $(docker ps -aq) # 删除所有容器
[root@localhost tool]# docker rmi $(docker images -q) # 删除所有镜像

编写项目

  1. 文件目录及镜像
[root@localhost tool]# ls 新建的tool文件下的目录展示,docker-compose.yml,Dockerfile是文件,nginx 是目录,ruoyi-admin.jar是后端打包的jar包
docker-compose.yml  Dockerfile  nginx  ruoyi-admin.jar
[root@localhost tool]# cd nginx/
[root@localhost nginx]# ls # 这里注意一下有nginx.conf这个文件里面是两种打包方式
html  nginx.confy
[root@localhost nginx]# cd html/
[root@localhost html]# ls # html目录下是前端打包的文件
favicon.ico  html  index.html  index.html.gz  robots.txt  static
[root@localhost nginx]# docker images #查看前后端所需要的镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ruoyiadmin          latest              e1deb2cc72ec        4 hours ago         724 MB
docker.io/nginx     latest              605c77e624dd        5 months ago        141 MB
docker.io/redis     latest              7614ae9453d1        6 months ago        113 MB
docker.io/mysql     5.7                 c20987f18b13        6 months ago        448 MB
docker.io/java      8                   d23bdf5b1b1b        5 years ago         643 MB

2.Docker文件

[root@localhost tool]# cat Dockerfile  # Docker文件内容展示
FROM java:8
COPY ruoyi-admin.jar /ruoyi-admin.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/ruoyi-admin.jar"]

3.docker-compose.yml文件

[root@localhost tool]# cat docker-compose.yml #docker-compose.yml文件内容
version: "2"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
      - 80:80  # 前端项目暴露的端口
    volumes: # 挂载
      # html和nginx.conf挂载
      - /tool/nginx/html:/usr/share/nginx/html
      - /tool/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  ruoyiadmin:
    image: ruoyiadmin:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 8080:8080 #后端项目暴露的端口
    privileged: true
  1. html里面 nginx.conf 文件
[root@localhost nginx]# 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   /usr/share/nginx/html;
         try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

     location /stage-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://192.168.1.103:8080/;
       }	      

      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;
         #自己服务器地址:没改的话就是默认8080
         proxy_pass http://192.168.1.103:8080/;
      }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  1. 启动项目
[root@localhost tool]# docker-compose up -d # 根据配置文件启动项目,时间较长
[root@localhost tool]# docker ps # 查看运行的镜像
[root@localhost tool]# docker logs -t -f [后端镜像ID] # 查看运行项目的日志

效果展示

浏览器访问你linux的ip地址 我的是192.168.1.110:80
![在这里插入图片描述](https://img-blog.csdnimg.cn/b83865003d834cba99ddc1518b95c522.png在这里插入图片描述

最终部署的项目就这样可以成功了,日志那里如果报错,我的是重启镜像,前面的命令中提到

总结

总结:部署项目非常好玩,部署好了有种小成就感!有不足的地方欢迎指正,一起学习,一起进步.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值