first commit
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
gitea/db
|
||||||
|
gitea/data
|
||||||
|
open-webui-pro/data
|
||||||
|
open-webui-pro/pgdata
|
||||||
|
open-webui-pro/redisdata
|
||||||
9
frpc/docker-compose.yml
Normal file
9
frpc/docker-compose.yml
Normal 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
37
frpc/frpc.toml
Normal 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
43
gitea/docker-compose.yml
Normal 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
16
mcpo/docker-compose.yml
Normal 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
10
memos/docker-compose.yml
Normal 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
7
nginx/docker-compose.yml
Normal 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
563
nginx/html/index.html
Normal 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: '© <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: '© 高德地图',
|
||||||
|
maxZoom: 18
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
var gaodeSatellite = L.tileLayer(
|
||||||
|
"https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
||||||
|
{
|
||||||
|
attribution: '© 高德卫星地图',
|
||||||
|
maxZoom: 18
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
var cartoDB = L.tileLayer(
|
||||||
|
"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",
|
||||||
|
{
|
||||||
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors © <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>
|
||||||
66
open-webui-pro/docker-compose.yml
Normal file
66
open-webui-pro/docker-compose.yml
Normal 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
|
||||||
Reference in New Issue
Block a user