Blossom 依赖 JDK8
+ MySQL8
【可选】拉取 MySQL 镜像并启动,如果已安装数据库,可以跳过该步骤。
docker pull mysql:8.0.31
启动镜像,注意挂载路径,否则容器删除后数据将丢失。
docker run \
-d \
--name mysql \
#【可选修改】数据库 root 用户的密码
-e MYSQL_ROOT_PASSWORD=jasmine888 \
-p 3306:3306 \
#【需修改】挂载数据库文件保存路径。
# 注意:只需要将冒号前的路径改为你 Docker 所在设备的某个路径,不要修改冒号后面的内容。
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /usr/local/docker/mysql-files/log:/var/lib/mysql-files \
-v /usr/local/docker/mysql/log:/var/log/mysql \
mysql:8.0.31
注意:如果命令错误:1. 请将命令中的注释删除。2. 将每一行后的斜杠\
删除。3. 将所有命令写为一行。
附加:如何在 Docker 中创建数据库。
一、进入容器,如果你的容器不叫 mysql,需要把下方的 mysql 改为你的容器名
docker exec -it mysql /bin/bash
二、登录 mysql,将下方 -p 后的 xzzz 修改为你的数据库密码
mysql -uroot -pxzzz
三、创建数据库
CREATE DATABASE blossom DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
提示以下内容则创建成功
Query OK, 1 row affected
拉取应用镜像
docker pull jasminexzzz/blossom:latest
启动应用容器,注意修改其中标识的内容
docker run -d \
# 容器名称
--name blossom-backend \
# 指定端口映射
-p 9999:9999 \
#【需修改】挂载图片保存路径,如果是 windows 环境,可以使用 /c/home/bl/ 来指定磁盘
# 注意:只需要将冒号前的路径改为你 Docker 所在设备的某个路径,不要修改冒号后面的内容。
-v /home/bl/:/home/bl/ \
# 启动的镜像名称
jasminexzzz/blossom:latest \
#【需修改】配置数据库访问地址
--spring.datasource.url="jdbc:mysql://192.168.31.99:3306/blossom?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&allowMultiQueries=true&useSSL=false&&serverTimezone=GMT%2B8" \
#【可选修改】配置数据库用户名
--spring.datasource.username=root \
#【可选修改】配置数据库密码
--spring.datasource.password=jasmine888
以上配置是官方信息,下面是自建实例配置(关键信息已隐藏):
docker run -d --name blossom-backend -p 9999:9999 -v /www/wwwroot/note/pic:/home/bl/ jasminexzzz/blossom:latest --spring.datasource.url="jdbc:mysql://172.17.0.3:3306/blossom?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&allowMultiQueries=true&useSSL=false&&serverTimezone=GMT%2B8" --spring.datasource.username=root --spring.datasource.password=XXXXXX
警告:注意修改配置项 -v /home/bl/:/home/bl/
的文件挂载路径,否则容器删除的同时会删除保存的图片信息。
查看配置项是否正确
输入以下命令,在容器日志中查看你修改后的配置项是否正常生效:
docker logs blossom-backend
或者直接访问
例如部署在本地,则可以访问127.0.0.1:9999
,如果返回以下内容,则说明部署成功。以下内容是提示没有登录,现在可以使用客户端登录使用。
{
"code": "AUTH-40101",
"msg": "无效的授权信息",
"ex": "无效的授权信息",
"data": null
}
访问
例如 IP:端口为:192.168.11.11:9999
,则访问
http://192.168.11.11:9999/editor/#/settingindex
反向代理
因为路径中带有#,这是不被允许的,#
符号在URL中被称为“片段标识符”(fragment identifier)。它通常用于指示浏览器滚动到页面的特定部分或在单页应用(SPA)中显示特定的视图或组件。由于#
及其后面的部分在发送到服务器时不会被包含在HTTP请求中,因此你不能直接在Nginx或其他任何服务器端配置中捕获或重定向它。
所以我选择了解析两个域名,建立一个中间站,在index.html中写上能打开网页A,就自动无感打开网页B的部分:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Direct Jump to Another Page</title>
<script>
// 立即执行函数,确保在DOM加载之前就开始跳转
(function() {
// 替换为你的目标URL
var targetUrl = 'https://note2.quanquan.site/editor/#/settingindex';
// 直接跳转到目标URL
window.location.href = targetUrl;
})();
</script>
</head>
<body>
<!-- 由于JavaScript会立即执行跳转,所以这里的内容通常不会被用户看到 -->
<p>如果你看到了这行文字,说明JavaScript跳转没有立即执行。</p>
</body>
</html>
其实不用这一步也可以,只是因为就算部署了域名,访问仍然要添加后面的/editor/#/settingindex部分,我觉得颇为麻烦,于是建立了一个中间站,用来自动跳转到目标网页。因为是直接跳转目标URL,就类似手动输入,就不涉及到#的发送请求了。