orztv
commited on
Commit
·
09b474c
1
Parent(s):
f5fdde0
update
Browse files- .gitattributes +0 -35
- Dockerfile +10 -8
- services.json +14 -2
- start.sh +4 -15
- traefik/dynamic.yml +17 -18
- traefik/traefik.yml +19 -6
.gitattributes
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
-
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dockerfile
CHANGED
@@ -9,11 +9,12 @@ ENV TRAEFIK_CONFIG_FILE=/home/pn/app/traefik/traefik.yml
|
|
9 |
RUN wget -q https://github.com/traefik/traefik/releases/download/v${TRAEFIK_VERSION}/traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz \
|
10 |
&& tar -xzf traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz \
|
11 |
&& mv traefik /usr/local/bin/ \
|
12 |
-
&& rm traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
17 |
|
18 |
# 切换到 pn 用户
|
19 |
USER pn
|
@@ -22,7 +23,7 @@ USER pn
|
|
22 |
WORKDIR /home/pn/app
|
23 |
|
24 |
# 创建必要的目录
|
25 |
-
RUN mkdir -p /home/pn/app/traefik /home/pn/app/python /home/pn/app/node /home/pn/app/
|
26 |
chown -R pn:pn /home/pn /home/pn/app
|
27 |
|
28 |
# 复制配置文件和启动脚本
|
@@ -35,10 +36,11 @@ RUN chmod +x /home/pn/app/start.sh
|
|
35 |
# 设置环境变量
|
36 |
ENV TRAEFIK_PORT=7860 \
|
37 |
PYTHON_PORT=8000 \
|
38 |
-
NODE_PORT=8001
|
|
|
39 |
|
40 |
# 暴露 Traefik 和后端服务端口
|
41 |
-
EXPOSE $TRAEFIK_PORT $PYTHON_PORT $NODE_PORT
|
42 |
|
43 |
# 启动容器时运行启动脚本
|
44 |
CMD ["/home/pn/app/start.sh"]
|
|
|
9 |
RUN wget -q https://github.com/traefik/traefik/releases/download/v${TRAEFIK_VERSION}/traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz \
|
10 |
&& tar -xzf traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz \
|
11 |
&& mv traefik /usr/local/bin/ \
|
12 |
+
&& rm traefik_v${TRAEFIK_VERSION}_linux_amd64.tar.gz \
|
13 |
+
# 安装 jq 用于解析 JSON,http-server 和 gettext-base(包含 envsubst)
|
14 |
+
&& apt-get update && apt-get install -y jq gettext-base curl \
|
15 |
+
&& npm install -g serve \
|
16 |
+
# 安装 n8n
|
17 |
+
&& npm install -g n8n
|
18 |
|
19 |
# 切换到 pn 用户
|
20 |
USER pn
|
|
|
23 |
WORKDIR /home/pn/app
|
24 |
|
25 |
# 创建必要的目录
|
26 |
+
RUN mkdir -p /home/pn/app/traefik /home/pn/app/python /home/pn/app/node /home/pn/app/root /home/pn/app/n8n && \
|
27 |
chown -R pn:pn /home/pn /home/pn/app
|
28 |
|
29 |
# 复制配置文件和启动脚本
|
|
|
36 |
# 设置环境变量
|
37 |
ENV TRAEFIK_PORT=7860 \
|
38 |
PYTHON_PORT=8000 \
|
39 |
+
NODE_PORT=8001 \
|
40 |
+
N8N_PORT=5678
|
41 |
|
42 |
# 暴露 Traefik 和后端服务端口
|
43 |
+
EXPOSE $TRAEFIK_PORT $PYTHON_PORT $NODE_PORT $N8N_PORT
|
44 |
|
45 |
# 启动容器时运行启动脚本
|
46 |
CMD ["/home/pn/app/start.sh"]
|
services.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
[
|
2 |
{
|
3 |
"name": "python-service",
|
4 |
-
"command": "python -m http.server",
|
5 |
"port": 8000,
|
6 |
"path_prefix": "/python",
|
7 |
"health_check_path": "/",
|
@@ -12,7 +12,7 @@
|
|
12 |
},
|
13 |
{
|
14 |
"name": "node-service",
|
15 |
-
"command": "npx serve -s --listen $
|
16 |
"port": 8001,
|
17 |
"path_prefix": "/node",
|
18 |
"health_check_path": "/",
|
@@ -20,5 +20,17 @@
|
|
20 |
"NODE_ENV": "production"
|
21 |
},
|
22 |
"working_dir": "/home/pn/app/node"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
}
|
24 |
]
|
|
|
1 |
[
|
2 |
{
|
3 |
"name": "python-service",
|
4 |
+
"command": "python -m http.server $PORT",
|
5 |
"port": 8000,
|
6 |
"path_prefix": "/python",
|
7 |
"health_check_path": "/",
|
|
|
12 |
},
|
13 |
{
|
14 |
"name": "node-service",
|
15 |
+
"command": "npx serve -s --listen $PORT --single --cors",
|
16 |
"port": 8001,
|
17 |
"path_prefix": "/node",
|
18 |
"health_check_path": "/",
|
|
|
20 |
"NODE_ENV": "production"
|
21 |
},
|
22 |
"working_dir": "/home/pn/app/node"
|
23 |
+
},
|
24 |
+
{
|
25 |
+
"name": "n8n-service",
|
26 |
+
"command": "n8n start --port $PORT",
|
27 |
+
"port": 5678,
|
28 |
+
"path_prefix": "/",
|
29 |
+
"health_check_path": "/healthz",
|
30 |
+
"env": {
|
31 |
+
"N8N_PORT": "5678",
|
32 |
+
"N8N_EDITOR_BASE_URL": "/"
|
33 |
+
},
|
34 |
+
"working_dir": "/home/pn/app/n8n"
|
35 |
}
|
36 |
]
|
start.sh
CHANGED
@@ -17,8 +17,6 @@ touch /home/pn/app/python/hi.txt
|
|
17 |
echo "Hello, Python!" > /home/pn/app/python/hi.txt
|
18 |
touch /home/pn/app/node/hi.txt
|
19 |
echo "Hello, Node!" > /home/pn/app/node/hi.txt
|
20 |
-
touch /home/pn/app/hi.txt
|
21 |
-
echo "Hello, Waeb!" > /home/pn/app/hi.txt
|
22 |
|
23 |
# 启动服务
|
24 |
echo "$services" | while read -r service; do
|
@@ -37,7 +35,7 @@ echo "$services" | while read -r service; do
|
|
37 |
log "ERROR: Directory $working_dir does not exist"
|
38 |
exit 1
|
39 |
fi
|
40 |
-
(cd $working_dir && eval "
|
41 |
done
|
42 |
|
43 |
# 等待服务启动
|
@@ -65,20 +63,11 @@ echo "$services" | while read -r service; do
|
|
65 |
port=$(echo $service | jq -r '.port')
|
66 |
health_check_path=$(echo $service | jq -r '.health_check_path')
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
log "ERROR: 健康检查失败,退出程序"
|
72 |
-
exit 1
|
73 |
-
fi
|
74 |
-
else
|
75 |
-
log "跳过 waeb-service 的健康检查"
|
76 |
fi
|
77 |
done
|
78 |
|
79 |
-
# 启动根路径服务
|
80 |
-
log "Starting root service on port 8080"
|
81 |
-
(cd /home/pn/app/root && python -m http.server 8080) &
|
82 |
-
|
83 |
# 启动 Traefik
|
84 |
exec traefik --configFile=$TRAEFIK_CONFIG_FILE
|
|
|
17 |
echo "Hello, Python!" > /home/pn/app/python/hi.txt
|
18 |
touch /home/pn/app/node/hi.txt
|
19 |
echo "Hello, Node!" > /home/pn/app/node/hi.txt
|
|
|
|
|
20 |
|
21 |
# 启动服务
|
22 |
echo "$services" | while read -r service; do
|
|
|
35 |
log "ERROR: Directory $working_dir does not exist"
|
36 |
exit 1
|
37 |
fi
|
38 |
+
(cd $working_dir && eval "PORT=$port $command") &
|
39 |
done
|
40 |
|
41 |
# 等待服务启动
|
|
|
63 |
port=$(echo $service | jq -r '.port')
|
64 |
health_check_path=$(echo $service | jq -r '.health_check_path')
|
65 |
|
66 |
+
if ! check_health $port "$name" "$health_check_path"; then
|
67 |
+
log "ERROR: 健康检查失败,退出程序"
|
68 |
+
exit 1
|
|
|
|
|
|
|
|
|
|
|
69 |
fi
|
70 |
done
|
71 |
|
|
|
|
|
|
|
|
|
72 |
# 启动 Traefik
|
73 |
exec traefik --configFile=$TRAEFIK_CONFIG_FILE
|
traefik/dynamic.yml
CHANGED
@@ -1,18 +1,17 @@
|
|
1 |
http:
|
2 |
routers:
|
3 |
-
my-waeb-router:
|
4 |
-
rule: "PathPrefix(`/waeb`)"
|
5 |
-
service: noop@internal
|
6 |
-
middlewares:
|
7 |
-
- traefik-plugin-waeb
|
8 |
-
entryPoints:
|
9 |
-
- traefik
|
10 |
-
|
11 |
root:
|
12 |
-
rule: "PathPrefix(`/`) && !PathPrefix(`/python`) && !PathPrefix(`/node`) && !PathPrefix(`/
|
13 |
-
service:
|
14 |
priority: 1
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
python-service:
|
17 |
rule: "PathPrefix(`/python`)"
|
18 |
service: python-service
|
@@ -28,6 +27,11 @@ http:
|
|
28 |
- node-service-stripprefix
|
29 |
|
30 |
middlewares:
|
|
|
|
|
|
|
|
|
|
|
31 |
python-service-stripprefix:
|
32 |
stripPrefix:
|
33 |
prefixes:
|
@@ -37,17 +41,12 @@ http:
|
|
37 |
stripPrefix:
|
38 |
prefixes:
|
39 |
- "/node"
|
40 |
-
|
41 |
-
traefik-plugin-waeb:
|
42 |
-
plugin:
|
43 |
-
traefik-plugin-waeb:
|
44 |
-
root: "/home/pn/app/waeb"
|
45 |
-
|
46 |
services:
|
47 |
-
|
48 |
loadBalancer:
|
49 |
servers:
|
50 |
-
- url: "http://localhost:
|
51 |
|
52 |
python-service:
|
53 |
loadBalancer:
|
|
|
1 |
http:
|
2 |
routers:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
root:
|
4 |
+
rule: "PathPrefix(`/`) && !PathPrefix(`/python`) && !PathPrefix(`/node`) && !PathPrefix(`/traefik`)"
|
5 |
+
service: n8n-service
|
6 |
priority: 1
|
7 |
|
8 |
+
traefik-dashboard:
|
9 |
+
rule: "PathPrefix(`/traefik`)"
|
10 |
+
service: api@internal
|
11 |
+
priority: 2
|
12 |
+
middlewares:
|
13 |
+
- traefik-dashboard-stripprefix
|
14 |
+
|
15 |
python-service:
|
16 |
rule: "PathPrefix(`/python`)"
|
17 |
service: python-service
|
|
|
27 |
- node-service-stripprefix
|
28 |
|
29 |
middlewares:
|
30 |
+
traefik-dashboard-stripprefix:
|
31 |
+
stripPrefix:
|
32 |
+
prefixes:
|
33 |
+
- "/traefik"
|
34 |
+
|
35 |
python-service-stripprefix:
|
36 |
stripPrefix:
|
37 |
prefixes:
|
|
|
41 |
stripPrefix:
|
42 |
prefixes:
|
43 |
- "/node"
|
44 |
+
|
|
|
|
|
|
|
|
|
|
|
45 |
services:
|
46 |
+
n8n-service:
|
47 |
loadBalancer:
|
48 |
servers:
|
49 |
+
- url: "http://localhost:5678"
|
50 |
|
51 |
python-service:
|
52 |
loadBalancer:
|
traefik/traefik.yml
CHANGED
@@ -8,8 +8,6 @@ log:
|
|
8 |
entryPoints:
|
9 |
web:
|
10 |
address: ":7860"
|
11 |
-
traefik:
|
12 |
-
address: ":8080"
|
13 |
|
14 |
providers:
|
15 |
file:
|
@@ -20,9 +18,24 @@ api:
|
|
20 |
insecure: true
|
21 |
dashboard: true
|
22 |
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
24 |
experimental:
|
25 |
plugins:
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
entryPoints:
|
9 |
web:
|
10 |
address: ":7860"
|
|
|
|
|
11 |
|
12 |
providers:
|
13 |
file:
|
|
|
18 |
insecure: true
|
19 |
dashboard: true
|
20 |
|
21 |
+
serversTransport:
|
22 |
+
maxIdleConnsPerHost: 100
|
23 |
+
|
24 |
+
pilot:
|
25 |
+
dashboard: false
|
26 |
+
|
27 |
experimental:
|
28 |
plugins:
|
29 |
+
enabled: false
|
30 |
+
|
31 |
+
accessLog: {}
|
32 |
+
|
33 |
+
tracing: {}
|
34 |
+
|
35 |
+
metrics: {}
|
36 |
+
|
37 |
+
# 设置 Traefik 以 pn 用户权限运行
|
38 |
+
users:
|
39 |
+
- name: pn
|
40 |
+
uid: 1000
|
41 |
+
gid: 1000
|