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

news2025/1/15 12:50:34

【项目部署上线】宝塔部署前端&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

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

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 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

拉取镜像:

docker pull redis

运行容器:

docker run -d --name redis -p 6379:6379 redis:latest redis-server --requirepass 123456

其中:

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

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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1470832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向面试的机器学习知识点(4)——分类模型

省流版: 本文介绍机器学习中的回归算法:逻辑回归、KNN、SVM、随机森林和XGBoost。作为机器学习的有监督学习方法,分类模型是最重要也是最常见的一类算法,在数据分析等岗位的笔试面试中都是常客,非常值得深入研究&…

基于Prony算法的系统参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Prony算法是一种用于信号处理和系统辨识的经典方法,特别适用于线性时不变系统(LTI)的频率响应分析以及模拟复指数信号序列。其…

特殊文件:XML文件,Properties属性文件【详解】

目录 1.Properties属性文件 2.特殊文件:XML文件 1.Properties属性文件 是一个Map集合(键值对集合),但是我们一般不会当集合使用。 核心作用:Properties是用来代表属性文件的,通过Properties可以读写…

【MySQL】学习和总结联合查询

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)

先说几个逻辑:(强调一下在这篇文章 输入路数 只有 1个或2个,输出只有1个,N个输入M个输出以后再说) 看下面的几个图: 图一( 忘了 这是 啥门,不是门吧 :)也就…

UE5 C++ TPS开发 学习记录(五)

这节课创建了新的游戏关卡Lobby,制作了属于自己的游戏名字"Match Type",制作了加入游戏会话的委托和函数,最后可以用IP就可以把客户端链接到服务端 .h // Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #incl…

pytest如何在类的方法之间共享变量?

在pytest中,setup_class是一个特殊的方法,它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时,你实际上是在修改类的一个实例属性。在Pyth…

高频面试题整理(二)

文章目录 索引相关问题优化你的索引 密集索引和稀疏索引如何定位并优化慢查询sqlMyISAM与InnoDB 关于锁方面的区别是什么?MyISAMInnoDB事务隔离级别 多线程并发的相关问题Thread中的start和run方法的区别Thread和Runnable是什么关系?如何处理线程的返回值…

【Java程序设计】【C00307】基于Springboot的基Hadoop的物品租赁管理系统(有论文)

基于Springboot的基Hadoop的物品租赁管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的基于 Hadoop的物品租赁系统的设计与实现,本系统有管理员、用户二种角色权限; 前台首页&#…

Xcode与Swift开发小记

引子 鉴于React Native目前版本在iOS上开发遇到诸多问题,本以为搞RN只需理会Javascript开发,没想到冒出CocoaPod的一堆编译问题。所以横下一条心,决定直接进攻iOS本身。不管你是用React Native,还是用Flutter,iOS下的…

记录一些mac电脑重装mysql和pgsql的坑

为什么要重装,是想在mac电脑 创建data目录…同事误操作,导致电脑重启不了.然后重装系统后,.就连不上数据库了.mysql和pgsql两个都连不上.网上也查了很多资料.实在不行,.就重装了… 重装mysql. 1.官网下载 https://www.mysql.com/downloads/ 滑到最下面 选择 选择对应的芯片版本…

python-产品篇-游戏-开心消消乐

文章目录 准备代码效果 准备 安装对应环境库 代码 import pygame import random from pygame.locals import *class SoundPlay:game_bgm "sound/GameSceneBGM.ogg"world_bgm sound/WorldSceneBGM.oggeliminate (sound/eliminate1.ogg, sound/eliminate2.ogg, s…

MATLAB环境下基于洗牌复杂演化的图像分割算法

智能优化算法因其较强的搜索解能力而得到了大量的应用,在这些计算智能算法中,群体智能优化算法因其高效性、有效性以及健壮性等优点而得到了科研人员的青睐。这类算法借鉴生物群体的合作特性,主要解决大规模复杂的分布式问题,研究…

YOLO算法改进Backbone系列之:EfficientViT

EfficientViT: Memory Effificient Vision Transformer with Cascaded Group Attention 摘要:视觉transformer由于其高模型能力而取得了巨大的成功。然而,它们卓越的性能伴随着沉重的计算成本,这使得它们不适合实时应用。在这篇论文中&#x…

深入理解 JavaScript 中的绑定机制(上)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Orange3数据预处理(列选择组件)数据角色及类型描述

在Orange3的文件组件中,datetime、categorical、numeric以及text代表不同种类的数据类型,具体如下: datetime:代表日期和时间类型的数据。通常用于时间序列分析、生存分析和其他需要考虑时间因素的机器学习任务中。例如&#xff0…

k8s-kubeapps部署 20

部署kubeapps应用,为Helm提供web UI界面管理: 下载最新版本的kubeapps并修改其values.yaml文件 下载并拉取所需镜像: 部署应用 添加解析 修改svc暴露方式为LoadBalancer 得到分配地址 访问http://192.168.182.102 授权并获取token 1.24前的…

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题,在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题,它是背包问题中的一个特例,通常被称为0/1背包问题。这里,我们有一系列的正整数 ,以及一个正整数&#xff0c…

TCP/IP协议栈:模拟器实现基本的L2和L3功能

在C中实现的TCPI/IP网络堆栈模拟器。该模拟器实现基本的第2层(MAC地址,Arp)和第3层(路由,IP)功能。 TCP/IP协议栈是一个网络通信的基础架构,包含了多层次的协议和功能。在模拟实现基本的L2和L3…

LabVIEW和Python开发微细车削控制系统

LabVIEW和Python开发微细车削控制系统 为满足现代精密加工的需求,开发了一套基于LabVIEW和Python的微细车削控制系统。该系统通过模块化设计,实现了高精度的加工控制和G代码的自动生成,有效提高了微细车削加工的自动化水平和编程效率。 项目…