first commit

This commit is contained in:
2026-01-18 09:05:55 +08:00
commit e3c1fa87fb
10 changed files with 758 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
gitea/db
gitea/data
open-webui-pro/data
open-webui-pro/pgdata
open-webui-pro/redisdata

2
README.md Normal file
View File

@@ -0,0 +1,2 @@
# docker 环境备份

9
frpc/docker-compose.yml Normal file
View File

@@ -0,0 +1,9 @@
services:
web:
image: snowdreamtech/frpc:latest
container_name: frpc
restart: always
network_mode: "host"
volumes:
- ./frpc.toml:/etc/frp/frpc.toml

37
frpc/frpc.toml Normal file
View File

@@ -0,0 +1,37 @@
[common]
server_addr = 116.62.233.247
bind_port = 7000
authentication_method = token
authenticate_new_work_conns = true
token = 839157
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 20022
[open-webui]
type = tcp
local_ip = 127.0.0.1
local_port = 3000
remote_port = 23000
[memos]
type = tcp
local_ip = 127.0.0.1
local_port = 5230
remote_port = 25230
[gitea]
type = tcp
local_ip = 127.0.0.1
local_port = 3033
remote_port = 23033
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port =28080

43
gitea/docker-compose.yml Normal file
View File

@@ -0,0 +1,43 @@
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=EpVfNYbg1l1oO7ii
restart: unless-stopped
networks:
- gitea
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3033:3000"
- "2222:22"
depends_on:
- db
db:
image: postgres:14
container_name: gitea_db
restart: unless-stopped
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=EpVfNYbg1l1oO7ii
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- ./db:/var/lib/postgresql/data

16
mcpo/docker-compose.yml Normal file
View File

@@ -0,0 +1,16 @@
services:
mcpo:
image: ghcr.io/open-webui/mcpo:main
container_name: mcpo
ports:
- "8100:8000"
volumes:
- ./config.json:/app/config.json # 挂载配置文件
environment:
- TZ=Asia/Shanghai
# 启动命令:指定配置文件路径,并设置 API Key 保护接口
command: --config /app/config.json --port 8000 --api-key "LsUtOyTRFXi60ahzG28FPoGCwDh9DF76" --hot-reload
restart: unless-stopped
networks:
webui-network:
external: true

10
memos/docker-compose.yml Normal file
View File

@@ -0,0 +1,10 @@
services:
memos:
image: neosmemo/memos:stable
container_name: memos
restart: unless-stopped
ports:
- "5230:5230"
volumes:
- ~/.memos/:/var/opt/memos

7
nginx/docker-compose.yml Normal file
View File

@@ -0,0 +1,7 @@
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html # 将当前目录下的 html 文件夹映射到容器内

563
nginx/html/index.html Normal file
View File

@@ -0,0 +1,563 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_8538bf146e586952d4d0396becedcbbd {
position: relative;
width: 100.0%;
height: 100.0%;
left: 0.0%;
top: 0.0%;
}
.leaflet-container { font-size: 1rem; }
</style>
<style>html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
</style>
<style>#map {
position:absolute;
top:0;
bottom:0;
right:0;
left:0;
}
</style>
<script>
L_NO_TOUCH = false;
L_DISABLE_3D = false;
</script>
</head>
<body>
<div class="folium-map" id="map_8538bf146e586952d4d0396becedcbbd" ></div>
</body>
<script>
var map_8538bf146e586952d4d0396becedcbbd = L.map(
"map_8538bf146e586952d4d0396becedcbbd",
{
center: [30.194743, 120.18248],
crs: L.CRS.EPSG3857,
...{
"zoom": 13,
"zoomControl": true,
"preferCanvas": false,
}
}
);
// 定义多个底图图层
var osm = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
maxZoom: 19
}
);
var gaode = L.tileLayer(
"https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
{
attribution: '&copy; 高德地图',
maxZoom: 18
}
);
var gaodeSatellite = L.tileLayer(
"https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
{
attribution: '&copy; 高德卫星地图',
maxZoom: 18
}
);
var cartoDB = L.tileLayer(
"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",
{
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors &copy; <a href="https://carto.com/attributions">CARTO</a>',
subdomains: 'abcd',
maxZoom: 19
}
);
// 默认添加高德地图
gaode.addTo(map_8538bf146e586952d4d0396becedcbbd);
// 创建图层控制器
var baseMaps = {
"高德地图": gaode,
"高德卫星": gaodeSatellite,
"OpenStreetMap": osm,
"CartoDB浅色": cartoDB
};
L.control.layers(baseMaps).addTo(map_8538bf146e586952d4d0396becedcbbd);
var circle_marker_576fbd9c04fc325b3aa68eb26a45da15 = L.circleMarker(
[30.194743, 120.18248],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_e241494cc6bd656097979c26182b60ae = L.popup({
"maxWidth": 300,
});
var html_27db5dc9bce30d95d13224dede9ebce2 = $(`<div id="html_27db5dc9bce30d95d13224dede9ebce2" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市滨江实验小学<br> <b>详细地址:</b>平乐街80号<br> <b>坐标:</b>经度 120.182480,纬度 30.194743 </div> </div>`)[0];
popup_e241494cc6bd656097979c26182b60ae.setContent(html_27db5dc9bce30d95d13224dede9ebce2);
circle_marker_576fbd9c04fc325b3aa68eb26a45da15.bindPopup(popup_e241494cc6bd656097979c26182b60ae)
;
var tooltip_576fbd9c04fc325b3aa68eb26a45da15 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_576fbd9c04fc325b3aa68eb26a45da15.setContent("杭州市滨江实验小学");
circle_marker_576fbd9c04fc325b3aa68eb26a45da15.bindTooltip(tooltip_576fbd9c04fc325b3aa68eb26a45da15);
var circle_marker_c89e99ad470d189b133f0311b1510644 = L.circleMarker(
[30.189155, 120.153359],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_8bcb8f5a43eabad2346e19210540e9db = L.popup({
"maxWidth": 300,
});
var html_456445fcab5cd772f445b43ecbceb940 = $(`<div id="html_456445fcab5cd772f445b43ecbceb940" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市钱塘实验小学<br> <b>详细地址:</b>东信大道1328号(联庄地铁站A口步行270米)<br> <b>坐标:</b>经度 120.153359,纬度 30.189155 </div> </div>`)[0];
popup_8bcb8f5a43eabad2346e19210540e9db.setContent(html_456445fcab5cd772f445b43ecbceb940);
circle_marker_c89e99ad470d189b133f0311b1510644.bindPopup(popup_8bcb8f5a43eabad2346e19210540e9db)
;
var tooltip_c89e99ad470d189b133f0311b1510644 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_c89e99ad470d189b133f0311b1510644.setContent("杭州市钱塘实验小学");
circle_marker_c89e99ad470d189b133f0311b1510644.bindTooltip(tooltip_c89e99ad470d189b133f0311b1510644);
var circle_marker_079fe9a360e3271bace2465d91e20308 = L.circleMarker(
[30.214149, 120.216263],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_2dd9694b44fbf7d35beecb0f3f4031d2 = L.popup({
"maxWidth": 300,
});
var html_71268b2d415aa76b727bcd6f62391e8e = $(`<div id="html_71268b2d415aa76b727bcd6f62391e8e" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市丹枫实验小学<br> <b>详细地址:</b>丹枫路520号<br> <b>坐标:</b>经度 120.216263,纬度 30.214149 </div> </div>`)[0];
popup_2dd9694b44fbf7d35beecb0f3f4031d2.setContent(html_71268b2d415aa76b727bcd6f62391e8e);
circle_marker_079fe9a360e3271bace2465d91e20308.bindPopup(popup_2dd9694b44fbf7d35beecb0f3f4031d2)
;
var tooltip_079fe9a360e3271bace2465d91e20308 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_079fe9a360e3271bace2465d91e20308.setContent("杭州市丹枫实验小学");
circle_marker_079fe9a360e3271bace2465d91e20308.bindTooltip(tooltip_079fe9a360e3271bace2465d91e20308);
var circle_marker_ecc8fba348b43ef588c50724bdd1d398 = L.circleMarker(
[30.203226, 120.200994],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_77cd8a6e1a912728f5a84939c462d4e6 = L.popup({
"maxWidth": 300,
});
var html_d4ecd7e972cc0dd65d462c47606ac07f = $(`<div id="html_d4ecd7e972cc0dd65d462c47606ac07f" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市闻涛小学<br> <b>详细地址:</b>新月路570号(江汉路地铁站C口步行400米)<br> <b>坐标:</b>经度 120.200994,纬度 30.203226 </div> </div>`)[0];
popup_77cd8a6e1a912728f5a84939c462d4e6.setContent(html_d4ecd7e972cc0dd65d462c47606ac07f);
circle_marker_ecc8fba348b43ef588c50724bdd1d398.bindPopup(popup_77cd8a6e1a912728f5a84939c462d4e6)
;
var tooltip_ecc8fba348b43ef588c50724bdd1d398 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_ecc8fba348b43ef588c50724bdd1d398.setContent("杭州市闻涛小学");
circle_marker_ecc8fba348b43ef588c50724bdd1d398.bindTooltip(tooltip_ecc8fba348b43ef588c50724bdd1d398);
var circle_marker_5d73d5c7e6ec62d2aaa540871e1be51f = L.circleMarker(
[30.222498, 120.227145],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_df7aa5befe92b91fbf92e0dee5e47add = L.popup({
"maxWidth": 300,
});
var html_a9c0ba92e5bf9d4ab041f56b963f6c68 = $(`<div id="html_a9c0ba92e5bf9d4ab041f56b963f6c68" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市奥体实验小学<br> <b>详细地址:</b>扬帆路西150米<br> <b>坐标:</b>经度 120.227145,纬度 30.222498 </div> </div>`)[0];
popup_df7aa5befe92b91fbf92e0dee5e47add.setContent(html_a9c0ba92e5bf9d4ab041f56b963f6c68);
circle_marker_5d73d5c7e6ec62d2aaa540871e1be51f.bindPopup(popup_df7aa5befe92b91fbf92e0dee5e47add)
;
var tooltip_5d73d5c7e6ec62d2aaa540871e1be51f = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_5d73d5c7e6ec62d2aaa540871e1be51f.setContent("杭州市奥体实验小学");
circle_marker_5d73d5c7e6ec62d2aaa540871e1be51f.bindTooltip(tooltip_5d73d5c7e6ec62d2aaa540871e1be51f);
var circle_marker_ffe83af4988b646028ebdf337c9c94d6 = L.circleMarker(
[30.183371, 120.220782],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_fc6a7a280ba59deeb083586069cb4dfe = L.popup({
"maxWidth": 300,
});
var html_dcc6504c17a7b1e690ce611241d98fcf = $(`<div id="html_dcc6504c17a7b1e690ce611241d98fcf" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市春晖小学<br> <b>详细地址:</b>东流路55号<br> <b>坐标:</b>经度 120.220782,纬度 30.183371 </div> </div>`)[0];
popup_fc6a7a280ba59deeb083586069cb4dfe.setContent(html_dcc6504c17a7b1e690ce611241d98fcf);
circle_marker_ffe83af4988b646028ebdf337c9c94d6.bindPopup(popup_fc6a7a280ba59deeb083586069cb4dfe)
;
var tooltip_ffe83af4988b646028ebdf337c9c94d6 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_ffe83af4988b646028ebdf337c9c94d6.setContent("杭州市春晖小学");
circle_marker_ffe83af4988b646028ebdf337c9c94d6.bindTooltip(tooltip_ffe83af4988b646028ebdf337c9c94d6);
var circle_marker_11fda5a81be82693922b3b616325d400 = L.circleMarker(
[30.182375, 120.185916],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_6980dcc875d54160f4cb59d25e94f8a1 = L.popup({
"maxWidth": 300,
});
var html_153cff88bb61c76666c78c9d708aa340 = $(`<div id="html_153cff88bb61c76666c78c9d708aa340" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市博文小学<br> <b>详细地址:</b>立业路298号<br> <b>坐标:</b>经度 120.185916,纬度 30.182375 </div> </div>`)[0];
popup_6980dcc875d54160f4cb59d25e94f8a1.setContent(html_153cff88bb61c76666c78c9d708aa340);
circle_marker_11fda5a81be82693922b3b616325d400.bindPopup(popup_6980dcc875d54160f4cb59d25e94f8a1)
;
var tooltip_11fda5a81be82693922b3b616325d400 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_11fda5a81be82693922b3b616325d400.setContent("杭州市博文小学");
circle_marker_11fda5a81be82693922b3b616325d400.bindTooltip(tooltip_11fda5a81be82693922b3b616325d400);
var circle_marker_03c498ba079736da6a14b9be1cbca838 = L.circleMarker(
[30.170512, 120.139382],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_66575626bbbe7ba87c71579a652362ef = L.popup({
"maxWidth": 300,
});
var html_2a48061c8d95f80d758d2f364f0812ef = $(`<div id="html_2a48061c8d95f80d758d2f364f0812ef" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市滨文小学<br> <b>详细地址:</b>滨文路670号(西浦路地铁站B口步行290米)<br> <b>坐标:</b>经度 120.139382,纬度 30.170512 </div> </div>`)[0];
popup_66575626bbbe7ba87c71579a652362ef.setContent(html_2a48061c8d95f80d758d2f364f0812ef);
circle_marker_03c498ba079736da6a14b9be1cbca838.bindPopup(popup_66575626bbbe7ba87c71579a652362ef)
;
var tooltip_03c498ba079736da6a14b9be1cbca838 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_03c498ba079736da6a14b9be1cbca838.setContent("杭州市滨文小学");
circle_marker_03c498ba079736da6a14b9be1cbca838.bindTooltip(tooltip_03c498ba079736da6a14b9be1cbca838);
var circle_marker_bd01c312c4a2f52e9c090578ce1b8f5f = L.circleMarker(
[30.19383, 120.227926],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_6d4663f7efd56c256bc0f88b1d00bcf5 = L.popup({
"maxWidth": 300,
});
var html_ccedbc4587c3df69e27a58016b3d2f08 = $(`<div id="html_ccedbc4587c3df69e27a58016b3d2f08" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市北塘河小学<br> <b>详细地址:</b>滨江区西兴路63号<br> <b>坐标:</b>经度 120.227926,纬度 30.193830 </div> </div>`)[0];
popup_6d4663f7efd56c256bc0f88b1d00bcf5.setContent(html_ccedbc4587c3df69e27a58016b3d2f08);
circle_marker_bd01c312c4a2f52e9c090578ce1b8f5f.bindPopup(popup_6d4663f7efd56c256bc0f88b1d00bcf5)
;
var tooltip_bd01c312c4a2f52e9c090578ce1b8f5f = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_bd01c312c4a2f52e9c090578ce1b8f5f.setContent("杭州市北塘河小学");
circle_marker_bd01c312c4a2f52e9c090578ce1b8f5f.bindTooltip(tooltip_bd01c312c4a2f52e9c090578ce1b8f5f);
var circle_marker_db751e8ca7794228c7373c7e44246788 = L.circleMarker(
[30.180243, 120.206269],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_6dd6422ed26e7fe98c66d00fa6accf30 = L.popup({
"maxWidth": 300,
});
var html_e327f037f8e8b5389bf4526134f246a0 = $(`<div id="html_e327f037f8e8b5389bf4526134f246a0" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市科创小学<br> <b>详细地址:</b>聚园路226号(江晖路地铁站C1口步行480米)<br> <b>坐标:</b>经度 120.206269,纬度 30.180243 </div> </div>`)[0];
popup_6dd6422ed26e7fe98c66d00fa6accf30.setContent(html_e327f037f8e8b5389bf4526134f246a0);
circle_marker_db751e8ca7794228c7373c7e44246788.bindPopup(popup_6dd6422ed26e7fe98c66d00fa6accf30)
;
var tooltip_db751e8ca7794228c7373c7e44246788 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_db751e8ca7794228c7373c7e44246788.setContent("杭州市科创小学");
circle_marker_db751e8ca7794228c7373c7e44246788.bindTooltip(tooltip_db751e8ca7794228c7373c7e44246788);
var circle_marker_9f93898c4b6e9b99bc4629063ca2053c = L.circleMarker(
[30.172278, 120.197331],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_a0f96cd0fd57a505df54440a82736a79 = L.popup({
"maxWidth": 300,
});
var html_30e9b87bd1cc54da5979600fe01a78a3 = $(`<div id="html_30e9b87bd1cc54da5979600fe01a78a3" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市长河小学<br> <b>详细地址:</b>长河街道双庙路23号<br> <b>坐标:</b>经度 120.197331,纬度 30.172278 </div> </div>`)[0];
popup_a0f96cd0fd57a505df54440a82736a79.setContent(html_30e9b87bd1cc54da5979600fe01a78a3);
circle_marker_9f93898c4b6e9b99bc4629063ca2053c.bindPopup(popup_a0f96cd0fd57a505df54440a82736a79)
;
var tooltip_9f93898c4b6e9b99bc4629063ca2053c = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_9f93898c4b6e9b99bc4629063ca2053c.setContent("杭州市长河小学");
circle_marker_9f93898c4b6e9b99bc4629063ca2053c.bindTooltip(tooltip_9f93898c4b6e9b99bc4629063ca2053c);
var circle_marker_3203f934ba4ef0efa9dda0d191f08266 = L.circleMarker(
[30.19531, 120.212883],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_8ce109ac8704e0e2979fcf58db4c54aa = L.popup({
"maxWidth": 300,
});
var html_3656fd08afb84e6525b7d2eec0dd773f = $(`<div id="html_3656fd08afb84e6525b7d2eec0dd773f" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市江晖小学<br> <b>详细地址:</b>八图园巷5号<br> <b>坐标:</b>经度 120.212883,纬度 30.195310 </div> </div>`)[0];
popup_8ce109ac8704e0e2979fcf58db4c54aa.setContent(html_3656fd08afb84e6525b7d2eec0dd773f);
circle_marker_3203f934ba4ef0efa9dda0d191f08266.bindPopup(popup_8ce109ac8704e0e2979fcf58db4c54aa)
;
var tooltip_3203f934ba4ef0efa9dda0d191f08266 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_3203f934ba4ef0efa9dda0d191f08266.setContent("杭州市江晖小学");
circle_marker_3203f934ba4ef0efa9dda0d191f08266.bindTooltip(tooltip_3203f934ba4ef0efa9dda0d191f08266);
var circle_marker_69f93da77d66af260a664ede6a2812ed = L.circleMarker(
[30.172915, 120.134625],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_6e9e53b3bbd91e638e22e005ebe81c48 = L.popup({
"maxWidth": 300,
});
var html_b3b6e3de74a9f6b8cbde1e503c3214b2 = $(`<div id="html_b3b6e3de74a9f6b8cbde1e503c3214b2" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市钱江湾小学<br> <b>详细地址:</b>西浦路1453号<br> <b>坐标:</b>经度 120.134625,纬度 30.172915 </div> </div>`)[0];
popup_6e9e53b3bbd91e638e22e005ebe81c48.setContent(html_b3b6e3de74a9f6b8cbde1e503c3214b2);
circle_marker_69f93da77d66af260a664ede6a2812ed.bindPopup(popup_6e9e53b3bbd91e638e22e005ebe81c48)
;
var tooltip_69f93da77d66af260a664ede6a2812ed = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_69f93da77d66af260a664ede6a2812ed.setContent("杭州市钱江湾小学");
circle_marker_69f93da77d66af260a664ede6a2812ed.bindTooltip(tooltip_69f93da77d66af260a664ede6a2812ed);
var circle_marker_8f1c0ca04cbec2da2ee11410b58296cb = L.circleMarker(
[30.166131, 120.165853],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_5469dd3af71ea602a7afd8cb4e1ef072 = L.popup({
"maxWidth": 300,
});
var html_58189b721c4da78249a792ace7943b65 = $(`<div id="html_58189b721c4da78249a792ace7943b65" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市东冠小学<br> <b>详细地址:</b>东冠路431号<br> <b>坐标:</b>经度 120.165853,纬度 30.166131 </div> </div>`)[0];
popup_5469dd3af71ea602a7afd8cb4e1ef072.setContent(html_58189b721c4da78249a792ace7943b65);
circle_marker_8f1c0ca04cbec2da2ee11410b58296cb.bindPopup(popup_5469dd3af71ea602a7afd8cb4e1ef072)
;
var tooltip_8f1c0ca04cbec2da2ee11410b58296cb = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_8f1c0ca04cbec2da2ee11410b58296cb.setContent("杭州市东冠小学");
circle_marker_8f1c0ca04cbec2da2ee11410b58296cb.bindTooltip(tooltip_8f1c0ca04cbec2da2ee11410b58296cb);
var circle_marker_7645f60373c7646265eb067f4581f777 = L.circleMarker(
[30.166609, 120.153034],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_7bd6b485519502e00fb827a503743153 = L.popup({
"maxWidth": 300,
});
var html_c2b3807ef62eaed546bf1736582f8d3a = $(`<div id="html_c2b3807ef62eaed546bf1736582f8d3a" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市高教园小学<br> <b>详细地址:</b>生地街188号<br> <b>坐标:</b>经度 120.153034,纬度 30.166609 </div> </div>`)[0];
popup_7bd6b485519502e00fb827a503743153.setContent(html_c2b3807ef62eaed546bf1736582f8d3a);
circle_marker_7645f60373c7646265eb067f4581f777.bindPopup(popup_7bd6b485519502e00fb827a503743153)
;
var tooltip_7645f60373c7646265eb067f4581f777 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_7645f60373c7646265eb067f4581f777.setContent("杭州市高教园小学");
circle_marker_7645f60373c7646265eb067f4581f777.bindTooltip(tooltip_7645f60373c7646265eb067f4581f777);
var circle_marker_f59bd1952dbf820c6a781f5ad9c4ebd8 = L.circleMarker(
[30.188291, 120.158186],
{"bubblingMouseEvents": true, "color": "#e53935", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#e53935", "fillOpacity": 0.8, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 7, "stroke": true, "weight": 3}
).addTo(map_8538bf146e586952d4d0396becedcbbd);
var popup_4c2ce337b3d2c02e2014c24b7d9fc3ea = L.popup({
"maxWidth": 300,
});
var html_194a090a837622bd0bc940f3cc8cfbd0 = $(`<div id="html_194a090a837622bd0bc940f3cc8cfbd0" style="width: 100.0%; height: 100.0%;"> <div style="font-size:14px;"> <b>学校名称:</b>杭州市彩虹城小学<br> <b>详细地址:</b>伟业路501号<br> <b>坐标:</b>经度 120.158186,纬度 30.188291 </div> </div>`)[0];
popup_4c2ce337b3d2c02e2014c24b7d9fc3ea.setContent(html_194a090a837622bd0bc940f3cc8cfbd0);
circle_marker_f59bd1952dbf820c6a781f5ad9c4ebd8.bindPopup(popup_4c2ce337b3d2c02e2014c24b7d9fc3ea)
;
var tooltip_f59bd1952dbf820c6a781f5ad9c4ebd8 = L.tooltip({"permanent": true, "direction": "right", "offset": [10, 0]});
tooltip_f59bd1952dbf820c6a781f5ad9c4ebd8.setContent("杭州市彩虹城小学");
circle_marker_f59bd1952dbf820c6a781f5ad9c4ebd8.bindTooltip(tooltip_f59bd1952dbf820c6a781f5ad9c4ebd8);
</script>
</html>

View File

@@ -0,0 +1,66 @@
services:
# --- 数据库服务 (PostgreSQL) ---
db:
image: postgres:15-alpine
container_name: open-webui-db
restart: unless-stopped
environment:
- POSTGRES_USER=webui_admin
- POSTGRES_PASSWORD=VURKxKYDmKw8u1CdS6RUf5LC
- POSTGRES_DB=openwebui
volumes:
- ./pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U webui_admin -d openwebui"]
interval: 5s
timeout: 5s
retries: 5
# --- 缓存服务 (Redis) ---
redis:
image: redis:7-alpine
container_name: open-webui-redis
restart: unless-stopped
volumes:
- ./redisdata:/data
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 5s
timeout: 5s
retries: 5
# --- Open WebUI 主程序 ---
open-webui:
image: open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
environment:
# 数据库连接配置
- DATABASE_URL=postgresql://webui_admin:VURKxKYDmKw8u1CdS6RUf5LC@db:5432/openwebui
# Redis 连接配置
- REDIS_URL=redis://redis:6379/0
# Ollama 接口地址 (根据实际情况调整)
- OLLAMA_BASE_URL=http://host.docker.internal:11434
# 安全密钥
- WEBUI_SECRET_KEY=HU13YdOhfTaINvCe1PvjlhW0yHVaiaBBqsCtXCWFDAKD44zp
volumes:
- ./data:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
# 也可以使用上述 ./data 这种本地路径形式,更加直观
pgdata:
redisdata:
data:
networks:
webui-network:
external: true