【项目部署上线】宝塔部署前端&Docker部署后端
【项目部署上线】宝塔部署前端&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,版本随意,不要太老:
点击左侧导航栏,点击”添加站点“:
在方框内填入域名或者是公网ip,然后点击提交:
点击根目录,将该目录下的所有文件都删除:
然后点击上传,将所有dist目录下的文件都上传:
上传完成之后配置反向代理,找到配置文件:
添加如下配置:
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
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...