orztv commited on
Commit
cd8aac4
·
1 Parent(s): 8c2cd23
Files changed (3) hide show
  1. Dockerfile +1 -0
  2. start.sh +3 -89
  3. traefik/dynamic.yml +60 -0
Dockerfile CHANGED
@@ -27,6 +27,7 @@ RUN mkdir -p /home/pn/app/traefik /home/pn/app/python /home/pn/app/node /home/pn
27
 
28
  # 复制配置文件和启动脚本
29
  COPY --chown=pn:pn traefik/traefik.yml /home/pn/app/traefik/
 
30
  COPY --chown=pn:pn start.sh /home/pn/app/start.sh
31
  COPY --chown=pn:pn services.json /home/pn/app/services.json
32
  RUN chmod +x /home/pn/app/start.sh
 
27
 
28
  # 复制配置文件和启动脚本
29
  COPY --chown=pn:pn traefik/traefik.yml /home/pn/app/traefik/
30
+ COPY --chown=pn:pn traefik/dynamic.yml /home/pn/app/traefik/
31
  COPY --chown=pn:pn start.sh /home/pn/app/start.sh
32
  COPY --chown=pn:pn services.json /home/pn/app/services.json
33
  RUN chmod +x /home/pn/app/start.sh
start.sh CHANGED
@@ -1,12 +1,6 @@
1
  #!/bin/bash
2
  set -e
3
 
4
- # 在文件开头的适当位置添加以下命令
5
- mkdir -p /home/pn/app/waeb
6
- echo "Hello from Waeb!" > /home/pn/app/waeb/index.html
7
- chmod 755 /home/pn/app/waeb
8
- chmod 644 /home/pn/app/waeb/index.html
9
-
10
  # 添加日志函数
11
  log() {
12
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
@@ -18,86 +12,6 @@ trap "log '收到终止信号,关闭进程...'; kill \$(jobs -p) 2>/dev/null;
18
  # 读取服务配置
19
  services=$(jq -c '.[]' services.json)
20
 
21
- # 动态生成 Traefik 配置
22
- generate_traefik_config() {
23
- local dynamic_config="/home/pn/app/traefik/dynamic.yml"
24
- echo "http:" > $dynamic_config
25
- echo " routers:" >> $dynamic_config
26
-
27
- # 修改 Waeb 路由器配置
28
- echo " my-waeb-router:" >> $dynamic_config
29
- echo " rule: \"PathPrefix(\`/waeb\`)\"" >> $dynamic_config
30
- echo " service: noop@internal" >> $dynamic_config
31
- echo " middlewares:" >> $dynamic_config
32
- echo " - traefik-plugin-waeb" >> $dynamic_config
33
- echo " entryPoints:" >> $dynamic_config
34
- echo " - web" >> $dynamic_config
35
-
36
- # 添加根路径路由
37
- echo " root:" >> $dynamic_config
38
- echo " rule: \"PathPrefix(\`/\`) && !PathPrefix(\`/python\`) && !PathPrefix(\`/node\`) && !PathPrefix(\`/waeb\`)\"" >> $dynamic_config
39
- echo " service: root" >> $dynamic_config
40
- echo " priority: 1" >> $dynamic_config
41
-
42
- echo "$services" | while read -r service; do
43
- name=$(echo $service | jq -r '.name')
44
- port=$(echo $service | jq -r '.port')
45
- path_prefix=$(echo $service | jq -r '.path_prefix')
46
-
47
- echo " $name:" >> $dynamic_config
48
- echo " rule: \"PathPrefix(\`$path_prefix\`)\"" >> $dynamic_config
49
- echo " service: $name" >> $dynamic_config
50
- echo " priority: 2" >> $dynamic_config
51
- echo " middlewares:" >> $dynamic_config
52
- echo " - ${name}-stripprefix" >> $dynamic_config
53
- done
54
-
55
- echo " middlewares:" >> $dynamic_config
56
- echo "$services" | while read -r service; do
57
- name=$(echo $service | jq -r '.name')
58
- path_prefix=$(echo $service | jq -r '.path_prefix')
59
-
60
- echo " ${name}-stripprefix:" >> $dynamic_config
61
- echo " stripPrefix:" >> $dynamic_config
62
- echo " prefixes:" >> $dynamic_config
63
- echo " - \"$path_prefix\"" >> $dynamic_config
64
- done
65
-
66
- # 添加 Waeb 插件中间件
67
- echo " traefik-plugin-waeb:" >> $dynamic_config
68
- echo " plugin:" >> $dynamic_config
69
- echo " traefik-plugin-waeb:" >> $dynamic_config
70
- echo " root: \"/home/pn/app/waeb\"" >> $dynamic_config
71
-
72
- echo " services:" >> $dynamic_config
73
-
74
- # 添加根路径服务
75
- echo " root:" >> $dynamic_config
76
- echo " loadBalancer:" >> $dynamic_config
77
- echo " servers:" >> $dynamic_config
78
- echo " - url: \"http://localhost:8080\"" >> $dynamic_config
79
-
80
- echo "$services" | while read -r service; do
81
- name=$(echo $service | jq -r '.name')
82
- port=$(echo $service | jq -r '.port')
83
-
84
- echo " $name:" >> $dynamic_config
85
- echo " loadBalancer:" >> $dynamic_config
86
- echo " servers:" >> $dynamic_config
87
- echo " - url: \"http://localhost:$port\"" >> $dynamic_config
88
- done
89
- }
90
-
91
- # 生成 Traefik 配置
92
- generate_traefik_config
93
-
94
- # 替换 Traefik 配置文件中的环境变量
95
- envsubst < /home/pn/app/traefik/dynamic.yml > /tmp/dynamic.yml
96
- mv /tmp/dynamic.yml /home/pn/app/traefik/dynamic.yml
97
-
98
- log "Traefik 配置文件内容:"
99
- cat /home/pn/app/traefik/dynamic.yml
100
-
101
  # 创建测试文件并写入内容
102
  touch /home/pn/app/python/hi.txt
103
  echo "Hello, Python!" > /home/pn/app/python/hi.txt
@@ -162,9 +76,9 @@ echo "$services" | while read -r service; do
162
  fi
163
  done
164
 
165
- # 启动 Traefik
166
- exec traefik --configFile=$TRAEFIK_CONFIG_FILE
167
-
168
  # 启动根路径服务
169
  log "Starting root service on port 8080"
170
  (cd /home/pn/app/root && python -m http.server 8080) &
 
 
 
 
1
  #!/bin/bash
2
  set -e
3
 
 
 
 
 
 
 
4
  # 添加日志函数
5
  log() {
6
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
 
12
  # 读取服务配置
13
  services=$(jq -c '.[]' services.json)
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  # 创建测试文件并写入内容
16
  touch /home/pn/app/python/hi.txt
17
  echo "Hello, Python!" > /home/pn/app/python/hi.txt
 
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
traefik/dynamic.yml ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ - web
10
+
11
+ root:
12
+ rule: "PathPrefix(`/`) && !PathPrefix(`/python`) && !PathPrefix(`/node`) && !PathPrefix(`/waeb`)"
13
+ service: root
14
+ priority: 1
15
+
16
+ python-service:
17
+ rule: "PathPrefix(`/python`)"
18
+ service: python-service
19
+ priority: 2
20
+ middlewares:
21
+ - python-service-stripprefix
22
+
23
+ node-service:
24
+ rule: "PathPrefix(`/node`)"
25
+ service: node-service
26
+ priority: 2
27
+ middlewares:
28
+ - node-service-stripprefix
29
+
30
+ middlewares:
31
+ python-service-stripprefix:
32
+ stripPrefix:
33
+ prefixes:
34
+ - "/python"
35
+
36
+ node-service-stripprefix:
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
+ root:
48
+ loadBalancer:
49
+ servers:
50
+ - url: "http://localhost:8080"
51
+
52
+ python-service:
53
+ loadBalancer:
54
+ servers:
55
+ - url: "http://localhost:8000"
56
+
57
+ node-service:
58
+ loadBalancer:
59
+ servers:
60
+ - url: "http://localhost:8001"