linux下前端vue+后端vue+mysql+redis+springboot+nginx的docker部署记录(nginx下多个vue前端)

2023-11-16

1.服务器

推荐购买腾讯云的学生优惠25岁以下免验证,我购买的是轻量应用服务器,5M宽度每月1000G不香吗。
系统是CentOS 7.6。购买好服务器并通过Xshell或其他软件连接好,就是前期的准备了(当然除了项目,自备)。

2.安装docker

#安装
yum install docker
#检验安装是否成功
[root@localhost opt]# docker --version
Docker version 1.13.1, build 7f2769b/1.13.1
#启动
systemctl start docker

配置镜像加速
自行百度阿里云镜像加速配置,获取自己的加速器

vim /etc/docker/daemon.json

# 添加如下内容,具体地址自己申请咯
{
  "registry-mirrors": ["https://*******.aliyuncs.com"]
}

# 重启服务
systemctl daemon-reload
systemctl restart docker

3.安装docker-compose

1.换源:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.更改权限:chmod +x /usr/local/bin/docker-compose

3.查看版本:docker-compose --version

4.编写Dockerfile,docker-compose.yml文件

因为我们的项目需要成为docker的镜像,所以我们必须先编写Dockerfile文件构建我们的项目镜像然后进行编排,Dockerfile文件可以帮我们进行构建。

Dockerfile

FROM java:8
EXPOSE 81
ADD vueblog.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar"]

docker-compose.yml
我们需要用到的软件与服务分别有nginx、mysql、redis、还有我们的springboot项目,所以编写如下:

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
      - 80:80  # 暴露端口
    volumes: # 挂载
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:5.7.27
    ports:
      - 3306:3306
    environment: # 指定用户root的密码
      - MYSQL_ROOT_PASSWORD=****
  redis:
    image: redis:latest
  vueblog:
    image: vueblog:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 81:81
    depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
      - mysql
      - redis

根据上方的服务名修改springboot配置文件中的地址
redis
在这里插入图片描述
mysql
在这里插入图片描述

5.准备好nginx的挂载目录和配置,上传vue

docker-compose.yml中已经提到,

宿主机的挂载目录:/root/nginx/html

挂载配置:/root/nginx/nginx.conf

所以我们在root目录下新建nginx目录,并进入nginx目录下新建html目录和一个nginx.conf配置文件。
并将两个vue项目打包(记得替换请求路径),分别在html下新建admin和front文件夹存放

然后对nginx.conf进行编写,具体配置如下:

nginx.conf

#user  root;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html/front;
            try_files $uri $uri/ /index.html last; # 别忘了这个哈
            index  index.html index.htm;
        }

       location /admin {
	    alias /usr/share/nginx/html/admin;
	    expires  1d;
	    index index.html;
	    autoindex on;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

6.部署后端

一切准备就绪之后,我们就开始编排部署了哈。

首先本地打包vueblog项目,vueblog.jar,并上传到linux中,同时docker-compose.yml、Dockerfile也上传到同一目录下。如图所示:
在这里插入图片描述

然后我们执行一下编排命令:

cd ~
docker-compose up -d

其中-d表示后台服务形式启动
然后我们稍等片刻,特别是开始Building vueblog的时候可能时间有点长,耐心等待即可!
最后提示如下:
在这里插入图片描述
此时其实你已经可以访问前端页面了,但是数据库还没建,所以你还需要远程链接数据库,并创建对应表。然后再次输入

docker-compose up -d

重新启动springboot(先前没有数据,其实是启动失败了的)

远程连接docker的mysql容器

nginx同时部署多个vue项目

即使如此当访问admin后台时还是可能无法加载,我看了报错是因为部分js或css没找到,然后一看路径发现都少了admin于是我用文件连接工具直接在index.html文件中添加了admin,其实也不多就7处(就我的项目而言)
在这里插入图片描述
其实也可以在配置文件中添加配置自动生成,但是我怕出错,就直接改了。其实我已经重置两次系统部署项目了!
配置实现

在这里插入图片描述
在这里插入图片描述
我只改了文件的引入,所以后台路由并不会多出admin,域名/admin只是在进入后台页面时有效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下前端vue+后端vue+mysql+redis+springboot+nginx的docker部署记录(nginx下多个vue前端) 的相关文章

  • 非生产模式下的 Elasticsearch docker 容器可消除 vm.max_map_count=262144 要求

    如何配置 elasticsearch docker 容器 elasticsearch 7 5 0 以使用更少的资源并在非生产模式下运行 我想在 Jenkins 和我的桌面上运行容器 并且满足以下要求这个弹性文档 https www elas
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 在Padavan上搭建udp53踩坑总结

    弄了差不多一下午 翻阅了许多帖子都没有能用的解决办法 人又不在家全程远程解决 希望对有相同需求的朋友有帮助 坑一 对于dnsmasq占用53端口的问题 查阅dnsmasq配置手册之后发现 在 etc dnsmasq conf中port缺省的
  • 2019哈工大计算机考研初试复试经历

    一 初试 1 准备阶段 1 1阶段一 我的第一阶段大约是在4月到6月 这阶段一方面我学业课程还比较忙 另一方面当时还要准备竞赛 所以准备不是很充分 只准备了数学 在外面上了数学考研辅导课 大班 不贵 对数学做了第一轮的复习 做了第一波习题
  • Istio二之流量劫持过程

    前面介绍了Istio依赖的Envoy的工作原理 接下来通过实际例子演示Istio是如何完成流量劫持以及流量转发的 首先准备部署两个pod 一个nginx pod作为服务端 一个toolbox pod作为客户端 toolbox只是一个能支持l
  • scanf()函数中%[]格式控制符用法

    此格式控制符的基本格式为 scanfset scanfset 有两种形式 一种是以非 字符开头的 scanset 表示在读入字符串时将匹配所有在 scanfset 中出现的字符 遇到非scanfset 中的字符时输入就结束 另外一种形式是以
  • filco蓝牙键盘配对流程_码字体验飞起的矮轴机械键盘 打字主力键盘妥妥的

    上篇文章 给我的 Macbook Pro 找一个好键盘 最后有小干货 最终决定买 Filco 蓝牙双模红轴 87 键位的键盘 可现实情况是被我退货了 并不是我改主意了 而是当时那个键盘确实有连键问题 还有空格嘎嘎响 连键指的是按 W 的时候
  • 蓝牙(二)蓝牙搜索、配对、连接

    1 搜索 从上一节我们可以知道 蓝牙状态发生了改变 并发生了回调 咱们就从回调开始 DevicePickerFragment java 用于蓝牙设置界面的蓝牙配置和管理 Override public void onBluetoothSta
  • 谷雪梅 Google中国

    转自 http tech qq com a 20060930 000109 htm 相关报道 郭去疾 本地化对Google来说是个伪命题 谷雪梅 Google中国第一位本土女工程师 2005年1月加盟Google 2006年2月调任Goog
  • 有关so-vits-svc-4.0数据处理时out of memory问题

    有关so vits svc 4 0数据处理时out of memory问题 今天使用so vits svc 4 0处理音频数据时 碰到网页报错 out of memory 查看一下代码报错 ImportError DLL load fail
  • RTOS专栏(一) —— rt-thread简单介绍和qemu使用

    本期主题 简单介绍rt thread 介绍qemu和rt thread怎么配合使用 qemu的简单例子 rt thread qemu 1 rt thread介绍 2 qemu介绍 3 搭建rt thread和qemu开发环境 4 简单例子
  • 从零开始学习OpenCL开发(一)架构

    1 Hello OpenCL 这里编写一个最简单的示例程序 演示OpenCl的基本使用方法 1 首先可以从Nvdia或者Amd或者Intel或者所有OpenCl成员的开发者网站上下载一份他们实现的OpenCL的SDK 虽然不同公司支持了不同
  • Qt5.14.2-windows平台配置Qt Creator的ARM体系结构Linux交叉编译器

    1 安装Qt并下载对应源码 下载并安装Qt 下载对应的源码包 windows版本选择zip格式的源码包 Index of archive qt 5 14 5 14 2https download qt io archive qt 5 14
  • LLM本地知识库问答系统(二):如何正确使用LlamaIndex索引

    推荐阅读列表 LLM本地知识库问答系统 一 使用LangChain和LlamaIndex从零构建PDF聊天机器人指南 上一篇文章我们介绍了使用LlamaIndex构建PDF聊天机器人 本文将介绍一下LlamaIndex的基本概念和原理 Ll
  • Markdown语法插入代码

    方法1 1 插入单行代码 code class EnlighterJSRAW 代码内容 code 2 插入多行代码 code class EnlighterJSRAW code code class EnlighterJSRAW 我是代码内
  • el-select结合el-tree实现树形多选

    形式一 业务需求 1 在树形列表中选择项目 2 树形列表需带有筛选过滤功能 3 将已选择的项目展示在输入框中 4 输入框中的选中项可以被单独快速删除 5 下拉框中可再次对之前选择过的项目进行重新选择 实现思路 1 所用技术 vue elem
  • Android 应用内打开Word、Excel、PPT、PDF等文档

    Android平台中 可以使用以下几种方式打开Word和Excel文档 预览图 一 直接上传给第三方之后用webview打开 1 微软 https view officeapps live com op view aspx src 文件链接
  • 编程练习题——用FileReader读取文件内容

    题目目标 main 方法的第一个参数是文件名 指定文件的每个行包含下列各式 名称 月 日 年 其中 姓名 是 String 可以包含空格分隔的数个字词 月 为 int 日 为 int 年 为 int 数据由空格分隔 使用文件数据填写 PEO
  • 02-百度翻译逆向

    1 分析 发现每次请求只有sign不一样 其他的都一样 2 在这个里面找sing 3 可以看到是在b函数中做的手脚 点进去b里面看看 4 直接把这个段复制下 在python中执行js代码 因为下面要使用e n函数使用 e n函数也复制 5
  • 数据库操作--增删改查

    一 数据操作语句 DDL 数据定义语言 定义数据的结构 列 CREATE DROP ALTER TRUNCATE DML 数据操作语言 操作数据的记录行 INSERT DELETE UPDATE DQL 数据查询语言 对数据没有影响 SEL
  • error C2039: “tag”: 不是“boost::Q_FOREACH”的成员 (XXX.cpp) 问题

    记一个编译问题 错误 252 error C2039 tag 不是 boost Q FOREACH 的成员 XXX cpp VS上编译项目时出现一下错误 VS上报错的截图 导致的原因 我在头文件和 cpp文件上包含了同一个
  • linux下前端vue+后端vue+mysql+redis+springboot+nginx的docker部署记录(nginx下多个vue前端)

    1 服务器 推荐购买腾讯云的学生优惠25岁以下免验证 我购买的是轻量应用服务器 5M宽度每月1000G不香吗 系统是CentOS 7 6 购买好服务器并通过Xshell或其他软件连接好 就是前期的准备了 当然除了项目 自备 2 安装dock