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

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

文章目录

1.安装依赖

1.1 安装mysql

sh 复制代码
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

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

sh 复制代码
vim /usr/local/mysql/conf/my.cnf

粘贴如下内容:

sh 复制代码
[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

重启:

sh 复制代码
docker restart mysql

1.2 安装Canal

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

mysql 复制代码
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中,输入命令,如果有内容则表示成功:

sh 复制代码
show master status;

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

sh 复制代码
docker network create api

让mysql加入这个网络:

sh 复制代码
docker network connect api mysql

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

sh 复制代码
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

拉取镜像:

sh 复制代码
docker pull redis

运行容器:

sh 复制代码
docker run -d --name redis -p 6379:6379 redis:latest redis-server --requirepass 123456

其中:

  • -d 表示可以在后台运行
  • -requirepass 密码

1.4 安装rabbitmq

拉取镜像:

sh 复制代码
docker pull rabbitmq:3-management

运行容器:

sh 复制代码
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数据库:

sql 复制代码
CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

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

拉取镜像:

sh 复制代码
docker pull nacos/nacos-server:v2.1.1

运行容器:

sh 复制代码
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,版本随意,不要太老:

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

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

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

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

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

添加如下配置:

nginx 复制代码
   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. 部署后端

sh 复制代码
#指定基础镜像
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 文件目录下执行以下命令:

sh 复制代码
docker build -t apps:1.0 .

运行容器:

sh 复制代码
docker run -p 8989:8989 --name app -d apps:1.0

相关推荐
并不会1 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、1 小时前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜1 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师1 小时前
CSS的三个重点
前端·css
耶啵奶膘2 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie4 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic5 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿5 小时前
webWorker基本用法
前端·javascript·vue.js
南猿北者6 小时前
docker容器
docker·容器