diff --git a/docker/traefik/docker-compose.yml b/docker/traefik/docker-compose.yml index 19f8a87..994c7cd 100644 --- a/docker/traefik/docker-compose.yml +++ b/docker/traefik/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: traefik: - image: traefik:v3.0 + image: traefik:latest container_name: traefik networks: - traefik-net @@ -10,30 +10,18 @@ services: - "80:80" - "8080:8080" volumes: + - /var/run/docker.sock:/var/run/docker.sock - ./traefik.yml:/etc/traefik/traefik.yml - - ./dynamic.yml:/etc/traefik/dynamic.yml # 动态配置文件 + - ./dynamic.yml:/etc/traefik/dynamic.yml + - ./log-file.log:/etc/traefik/log-file.log + - ./access.log:/etc/traefik/access.log restart: always whoami: - image: traefik/whoami + image: traefik/whoami:latest labels: - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)" - # 2. Nacos 服务监听脚本 -# nacos-cluster-watcher: -# user: "root" -# privileged: true -# image: node:24.8.0-alpine3.21 -# container_name: nacos-cluster-watcher -# # network_mode: "host" -# networks: -# - traefik-net -# working_dir: /app -# volumes: -# - ./:/app # 挂载当前目录到容器 -# command: sh -c "npm install && node src/index.js" -# restart: always - networks: traefik-net: driver: bridge diff --git a/docker/traefik/dynamic.yml b/docker/traefik/dynamic.yml index 7298116..27250a5 100644 --- a/docker/traefik/dynamic.yml +++ b/docker/traefik/dynamic.yml @@ -1,68 +1,107 @@ http: routers: - app-product-router: - rule: PathPrefix(`/app-product`) - service: app-product-service - entryPoints: - - web - middlewares: - - compress - - ipWhiteList - - rateLimit - - retries - main-app-router: - rule: PathPrefix(`/main-app`) - service: main-app-service - entryPoints: - - web - middlewares: - - compress - - ipWhiteList - - rateLimit - - retries app-shared-router: - rule: PathPrefix(`/app-shared`) + rule: Host(`nacos.ddd.com`) && PathPrefix(`/app-shared`) service: app-shared-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed entryPoints: - web - middlewares: - - compress - - ipWhiteList - - rateLimit - - retries + + app-product-router: + rule: Host(`nacos.ddd.com`) && PathPrefix(`/app-product`) + service: app-product-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed + entryPoints: + - web + + # 使用域名访问前端main-app + main-ddd-router: + rule: Host(`main.ddd.com`) + service: main-ddd-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed + entryPoints: + - web + + # Nacos 集群 管理后台的统一访问域名 + nacosui-ddd-router: + rule: Host(`nacosui.ddd.com`) + service: nacosui-ddd-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed + entryPoints: + - web + + # trafik 网关 代理 内网 nacos 集群 的地址 + nacos-ddd-router: + rule: Host(`nacos.ddd.com`) + service: nacos-ddd-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed + entryPoints: + - web + + # trafik 网关的管理后台的域名 + trafikui-ddd-router: + rule: Host(`trafikui.ddd.com`) + service: trafikui-ddd-service + observability: + metrics: true + accessLogs: true + tracing: true + traceVerbosity: detailed + entryPoints: + - web + + services: - app-product-service: - loadBalancer: - servers: - - url: http://192.168.31.101:1301 - main-app-service: - loadBalancer: - servers: - - url: http://192.168.31.101:1300 app-shared-service: loadBalancer: servers: - url: http://192.168.31.101:1333 - middlewares: - rateLimit: - rateLimit: - average: 100 - burst: 200 - period: 1s - sourceCriterion: - ipStrategy: - depth: 2 - compress: - compress: - excludedContentTypes: - - text/event-stream - minResponseBodyBytes: 1024 - ipWhiteList: - ipWhiteList: - sourceRange: - - 127.0.0.1/32 - - 192.168.107.0/24 - retries: - retry: - attempts: 3 - initialInterval: 200ms + + app-product-service: + loadBalancer: + servers: + - url: http://192.168.31.101:1301 + + main-ddd-service: + loadBalancer: + servers: + - url: http://192.168.31.101:1300 + + nacosui-ddd-service: + loadBalancer: + servers: + - url: http://192.168.139.84:8080 + - url: http://192.168.139.15:8080 + - url: http://192.168.139.178:8080 + + nacos-ddd-service: + loadBalancer: + servers: + - url: http://192.168.139.84:8848 + - url: http://192.168.139.15:8848 + - url: http://192.168.139.178:8848 + + trafikui-ddd-service: + loadBalancer: + servers: + - url: http://192.168.139.80:8080 \ No newline at end of file diff --git a/docker/traefik/traefik.yml b/docker/traefik/traefik.yml index 12c9d68..f89b390 100644 --- a/docker/traefik/traefik.yml +++ b/docker/traefik/traefik.yml @@ -10,7 +10,25 @@ entryPoints: # 服务发现与配置源(关键:子项缩进必须一致) providers: + docker: { } # 动态路由规则文件 file: filename: "/etc/traefik/dynamic.yml" watch: true # 自动监听文件变化 + +log: + filePath: "/etc/traefik/log-file.log" + format: common + level: INFO + +accessLog: + filePath: "/etc/traefik/access.log" + format: "json" + addInternals: true + filters: + retryAttempts: true + minDuration: "2ms" + fields: + defaultMode: "keep" + headers: + defaultMode: "keep"