• docker+nginx+redis部署前后端分离项目!!!


    介绍本文用的经典的前后端分离开源项目、项目的拉取这些在另一篇博客!!!

    其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!!

    地址:http://www.cnblogs.com/psfjc/p/16268566.html

    准备介绍就是这些,现在咋们着手开始部署

    1、安装docker

    Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版强调安全,付费使用,支持周期 24 个月。

    Docker CE 分为 `stable` `test` 和 `nightly` 三个更新频道。

    官方网站上有各种环境下的 [安装指南](https://docs.docker.com/install/),这里主要介绍 Docker CE 在 CentOS上的安装。

    Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

    1、yum 包更新到最新

    yum update

    2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 

    yum install -y yum-utils device-mapper-persistent-data lvm2

    3、 设置yum源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    注意:如果之前安装过旧版本docker、可以使用下面命令卸载!!!

    复制代码
    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine \
                      docker-ce
    复制代码

    4、安装docker

    yum install -y docker-ce

    5、查看docker版本

    docker -v

    2、启动docker

    Docker应用需要用到各种端口,逐一去修改防火墙设置。

    自己配置玩的话可以直接关闭防火墙,如果是真正的部署、建议不要随意关闭防火墙,开放需要的端口即可!!!

    复制代码
    # 关闭
    systemctl stop firewalld
    # 禁止开机启动防火墙
    systemctl disable firewalld
    #查询已开放端口命令
    firewall-cmd --list-ports
    #开放指定端口命令
    firewall-cmd --zone=public --add-port=端口号/tcp --permanent
    复制代码

    通过命令启动docker:

    复制代码
    systemctl start docker  # 启动docker服务
    
    systemctl stop docker  # 停止docker服务
    
    systemctl restart docker  # 重启docker服务
    复制代码

    然后输入命令,可以查看docker版本:

    docker -v

    3、部署后端部分

    前后端部署的项目打包其中需要修改一些配置、其中后端包括mysql,redis,log日志路径修改

    前端配置文件转发路径的修改!!!请看另外一篇博客!!!

    1、先拉取项目所需要的java环境镜像!!

    直接运行命令:docker pull java:8

    2、部署mysql

    搜索镜像

    docker search mysql

     拉取镜像

    docker pull mysql:5.7

    创建容器,设置端口映射(可以映射相同端口)、目录映射(很重要)!!!

    # 在/root目录下创建mysql目录用于存储mysql数据信息
    mkdir ~/mysql
    cd ~/mysql

    输入命令

    复制代码
    docker run -id \
    -p 3306:3306 \
    --name=c_mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7
    c_mysql是容器名字
    • 参数说明:

      • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3306端口。

      • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录

      • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录

      • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录

      • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

    复制代码

    使用外部机器连接容器中的mysql、导入相关的表!!!

    2、部署redis

    搜索redis镜像

    docker search redis

    拉取redis镜像

    docker pull redis:6.2.6

    创建容器,设置端口映射

    docker run -id --name=c_redis -p 6379:6379 redis:6.2.6

    使用外部机器连接redis

    ./redis-cli.exe -h 192.168.44.128 -p 6379

    能连上就基本没问题了!!!!

    4、在/root目录下使用命令

    mkdir -p /java/docker-filesto

    创建完成后,我们把提前打包好的jar包放在docker-filesto目录下

    并在此目录下创建文件springboot_dockerfile!!!

     

     在springboot_dockerfile文件中加入相关配置!

    这里可以借助第三方工具创建,也可以利用vim!!!

    复制代码
    FROM java:8
    #定义父镜像
    MAINTAINER chao<FENGJIANCHAO>
    #定义作者信息
    ADD ruoyi-admin.jar ruoyi.jar
    #将jar包添加到容器中、其中ruoyi-admin.jar为打好的jar包、ruoyi.jar
    #为改的名字
    CMD java -jar ruoyi.jar
    #定义容器启动执行的命令
    复制代码

    执行命令创建镜像注意‘.’不能省略

    docker build -f ./springboot_dockerfile -t ruoyi .

    通过dockerfile构建镜像:docker bulid-f dockerfile文件路径 -t 镜像名称版本

    使用命令docker images查看创建的镜像!!!

    最后创建容器运行:

    docker run -id -p8080:8080 --name=ruoyi ruoyi

    docker rum -id -p 8080:8080 --name=名字 所依赖的镜像名称:版本(最新版不用加) -p后是宿主机与容器的端口映射

    浏览器访问ip+端口、后端部署成功!!!

    4、部署前端部分

    1、安装nginx

    拉取nginx官方镜像,这里默认拉取的是最新版本镜像:latest

    拉取命令:

    docker pull nginx

    创建容器、设置端口映射!!!

    在/root目录下使用命令

    mkdir -p /myvue/nginx/conf

    进入conf目录下、创建需要映射的配置文件nginx.conf

    vim nginx.conf

    在配置文件中加入如下配置!!!

    复制代码
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    #http块
    http {
     #http全局块
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
      #server块
        server {
       #server全局块
            listen       80;#监听端口
            server_name  192.168.44.128#监听地址,填自己服务器ip  
            charset utf-8;
    #location块很重要!!!!
        location / {
            root  /usr/share/nginx/html/dist;#前端资源路径
            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://192.168.44.128:8080/;#后端转发地址,你的服务器ip+端口
            }
    
            error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                   root   html;
            }
        }
        include /etc/nginx/conf.d/*.conf;
    }
    复制代码

    同理退回根目录:cd /

    创建需要映射的网站文件目录

    mkdir -p /myvue/nginx/html

    创建成功,使用第三方工具把前端打包生成的整个dist文件放在html目录下。注意是整个dist文件!!!

     

     

    启动nginx 和映射文件

    复制代码
    docker run -d -p 80:80 --name=Ruoyi \ 
    -v /myvue/nginx/html:/usr/share/nginx/html \
    -v /myvue/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx
    
    -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
    -v将主机当前目录下的 /myvue/nginx/html挂载到容器的 :/usr/share/nginx/html
    -v将主机当前目录下的 /myvue/nginx/conf/nginx.conf挂载到容器的/etc/nginx/nginx.conf nginx
    配置目录
    复制代码

    查看容器启动情况:

    docker ps -a

    Up代表启动成功此时浏览器访问ip+端口

    登录!!!!!

    项目搭建就成功了!!!!!

    本文仅用于学习、如有错误请纠正!!!!!

     


    __EOF__

  • 本文作者: psfjc
  • 本文链接: https://www.cnblogs.com/psfjc/p/16275075.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Python学习第六篇:lambda 表达式
    评价——秩和比综合评价
    报错注入 [极客大挑战 2019]HardSQL1
    Git 教程
    LeetCode--2.两数相加
    AnyTransition/过渡动画, MatchedGeometryEffect/匹配几何动画效果 的使用
    【设计模式深度剖析】【2】【结构型】【装饰器模式】| 以去咖啡馆买咖啡为例 | 以穿衣服出门类比
    练习:注册页面
    项目经理,你真的有领导力吗?
    pdf怎么加密?
  • 原文地址:https://www.cnblogs.com/psfjc/p/16275075.html