【项目部署上线】宝塔部署前端&Docker部署后端

03-23 1492阅读 0评论

【项目部署上线】宝塔部署前端&Docker部署后端

文章目录

    • 【项目部署上线】宝塔部署前端&Docker部署后端
    • 1.安装依赖
      • 1.1 安装mysql
      • 1.2 安装Canal
      • 1.3 安装redis
      • 1.4 安装rabbitmq
      • 1.5 安装nacos
      • 2. 部署前端
      • 3. 部署后端
      • 1.安装依赖

        1.1 安装mysql

        docker run -d -p 3306:3306 --privileged=true \
        -v /usr/local/mysql/log:/var/log/mysql \
        -v /usr/local/mysql/data:/var/lib/mysql \
        -v /usr/local/mysql/conf:/etc/mysql/conf.d \
        -e MYSQL_ROOT_PASSWORD=123456 \
        --name mysql mysql:5.7
        

        安装完成之后,编写配置文件:

        【项目部署上线】宝塔部署前端&Docker部署后端,【项目部署上线】宝塔部署前端&Docker部署后端,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,我们,安装,设置,第1张
        (图片来源网络,侵删)
        vim /usr/local/mysql/conf/my.cnf
        

        粘贴如下内容:

        [client]
        default_character_set=utf8
        [mysqld]
        collation_server=utf8_general_ci
        character_set_server=utf8
        ##开启了主从同步,因为等下还要安装canal
        server-id=1000
        log-bin=/var/lib/mysql/mysql-bin
        binlog-do-db=faiz_api
        

        重启:

        docker restart mysql
        

        1.2 安装Canal

        接下来添加一个仅用于数据同步的账户:

        create user canal@'%' IDENTIFIED by 'canal';
        GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%' identified by 'canal';
        FLUSH PRIVILEGES;
        

        重启mysql容器即可

        docker restart mysql
        

        测试设置是否成功:在mysql控制台,或者Navicat中,输入命令,如果有内容则表示成功:

        show master status;
        

        我们需要创建一个网络,将MySQL、Canal放到同一个Docker网络中:

        【项目部署上线】宝塔部署前端&Docker部署后端,【项目部署上线】宝塔部署前端&Docker部署后端,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,我们,安装,设置,第2张
        (图片来源网络,侵删)
        docker network create api
        

        让mysql加入这个网络:

        docker network connect api mysql
        

        直接运行canal容器,会自动去下载镜像:

        docker run -p 11111:11111 --name canal \
        -e canal.destinations=faiz_api \
        -e canal.instance.master.address=mysql:3306  \
        -e canal.instance.dbUsername=canal  \
        -e canal.instance.dbPassword=canal  \
        -e canal.instance.connectionCharset=UTF-8 \
        -e canal.instance.tsdb.enable=true \
        -e canal.instance.gtidon=false  \
        -e canal.instance.filter.regex=.*\..* \
        --network api \
        -d canal/canal-server:v1.1.5
        

        说明:

        • -p 11111:11111:这是canal的默认监听端口
        • -e canal.instance.master.address=mysql:3306:数据库地址和端口,如果不知道mysql容器地址,可以通过docker inspect 容器id来查看
        • -e canal.instance.dbUsername=canal:数据库用户名
        • -e canal.instance.dbPassword=canal :数据库密码
        • -e canal.instance.filter.regex=:要监听的表名称

          表名称监听支持的语法:

          mysql 数据解析关注的表,Perl正则表达式.
          多个正则之间以逗号(,)分隔,转义符需要双斜杠(\) 
          常见例子:
          1.  所有表:.*   or  .*\..*
          2.  canal schema下所有表: canal\..*
          3.  canal下的以canal打头的表:canal\.canal.*
          4.  canal schema下的一张表:canal.test1
          5.  多个规则组合使用然后以逗号隔开:canal\..*,mysql.test1,mysql.test2 
          

          1.3 安装redis

          创建redis文件夹并下载配置文件:

          mkdir -p /data/redis/conf
          cd /data/redis/conf
          wget http://download.redis.io/redis-stable/redis.conf
          

          修改配置文件:

          【项目部署上线】宝塔部署前端&Docker部署后端,【项目部署上线】宝塔部署前端&Docker部署后端,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,我们,安装,设置,第3张
          (图片来源网络,侵删)
          vim redis.conf
          

          注意下面这些配置:

          bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
           
          protected-mode no #默认yes,开启保护模式,限制为本地访问
           
          daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,
          除非kill进程(可选),改为yes会使配置文件方式启动redis失败
           
          appendonly yes #redis持久化
           
          requirepass 123456 #设置redis启动密码为123456
          

          直接执行run命令,会自动拉取镜像:

          docker run -p 6379:6379 --name redis -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
          

          1.4 安装rabbitmq

          拉取镜像:

          docker pull rabbitmq:3-management
          

          运行容器:

          docker run \
           -e RABBITMQ_DEFAULT_USER=root \
           -e RABBITMQ_DEFAULT_PASS=123456 \
           --name rabbitmq \
           --hostname mq1 \
           -p 15672:15672 \
           -p 5672:5672 \
           -d \
           rabbitmq:3-management
          

          1.5 安装nacos

          创建nacos数据库:

          CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
          

          nacos官方sql脚本地址:官网地址

          拉取镜像:

          docker pull nacos/nacos-server:v2.1.1
          

          运行容器:

          docker run \
          -d --name nacos \
          -p 8848:8848 -p 9848:9848 -p 9849:9849 \
          -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql  \
          -e JVM_XMS=256m \
          -e JVM_XMX=256m \
          -e MYSQL_SERVICE_HOST=127.0.0.1 -e MYSQL_SERVICE_PORT=3306 \
          -e MYSQL_SERVICE_USER=nacos \
          -e MYSQL_SERVICE_PASSWORD=nacos \
          -e MYSQL_SERVICE_DB_NAME=nacos \
          -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai" nacos/nacos-server:v2.1.1
          

          2. 部署前端

          在前端项目当中执行build,将项目打包成dist目录:

          下载nginx,版本随意,不要太老:

          【项目部署上线】宝塔部署前端&Docker部署后端

          点击左侧导航栏,点击”添加站点“:

          【项目部署上线】宝塔部署前端&Docker部署后端

          在方框内填入域名或者是公网ip,然后点击提交:

          【项目部署上线】宝塔部署前端&Docker部署后端

          点击根目录,将该目录下的所有文件都删除:

          【项目部署上线】宝塔部署前端&Docker部署后端

          【项目部署上线】宝塔部署前端&Docker部署后端

          然后点击上传,将所有dist目录下的文件都上传:

          【项目部署上线】宝塔部署前端&Docker部署后端

          上传完成之后配置反向代理,找到配置文件:

          【项目部署上线】宝塔部署前端&Docker部署后端

          添加如下配置:

          【项目部署上线】宝塔部署前端&Docker部署后端

             location ^~ /api {
                proxy_pass http://ip地址:端口号/api;
                add_header 'Access-Control-Allow-Origin' 'http://api.tempeisite.xyz/';
                add_header 'Access-Control-Allow-Credentials' 'true';
                add_header 'Access-Control-Allow-Methods' 'GET ,POST ,OPTIONS';
                add_header 'Access-Control-Allow-Headers' '*';
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Allow-Origin' 'http://api.tempeisite.xyz/';
                    add_header 'Access-Control-Allow-Credentials' 'true';
                    add_header 'Access-Control-Allow-Methods' 'GET ,POST ,OPTIONS';
                    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain;charset=utf-8';
                    add_header 'Content-Length' 0;
                  return 204;
                }
              }
          

          3. 部署后端

          #指定基础镜像
          FROM openjdk:8-jdk-alpine
          #设置环境变量
          ENV APP_PATH=/app
          #设置工作目录
          WORKDIR $APP_PATH
          #将jar包导入新的镜像
          ADD demo.jar $APP_PATH/apps.jar
          #暴露端口
          EXPOSE 8989
          ENTRYPOINT ["java","-jar"]
          CMD ["apps.jar"]
          

          编写完之后,在 Dockerfile 文件目录下执行以下命令:

          docker build -t apps:1.0 .
          

          运行容器:

          docker run -p 8989:8989 --name app -d apps:1.0
          


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1492人围观)

还没有评论,来说两句吧...

目录[+]