当前位置:首页 » 《休闲阅读》 » 正文

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

25 人参与  2024年04月14日 16:50  分类 : 《休闲阅读》  评论

点击全文阅读


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

文章目录

【项目部署上线】宝塔部署前端&Docker部署后端1.安装依赖1.1 安装mysql1.2 安装Canal1.3 安装redis1.4 安装rabbitmq1.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

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

vim /usr/local/mysql/conf/my.cnf

粘贴如下内容:

[client]default_character_set=utf8[mysqld]collation_server=utf8_general_cicharacter_set_server=utf8##开启了主从同步,因为等下还要安装canalserver-id=1000log-bin=/var/lib/mysql/mysql-binbinlog-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 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.test15.  多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2 

1.3 安装redis

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

mkdir -p /data/redis/confcd /data/redis/confwget http://download.redis.io/redis-stable/redis.conf

修改配置文件:

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,版本随意,不要太老:

image-20240225002649982

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

image-20240225190007496

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

image-20240225190206267

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

image-20240225190323450

image-20240225190404403

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

image-20240225190723725

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

image-20240225190953404

添加如下配置:

image-20240225191307522

   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 8989ENTRYPOINT ["java","-jar"]CMD ["apps.jar"]

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

docker build -t apps:1.0 .

运行容器:

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/95268.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1