diff --git a/consul/config/consul.hcl b/consul/config/consul.hcl deleted file mode 100644 index 144ebe0..0000000 --- a/consul/config/consul.hcl +++ /dev/null @@ -1,8 +0,0 @@ -ui_config { - enabled = true -} - -acl { - enabled = false - default_policy = "deny" -} \ No newline at end of file diff --git a/consul/config/consul.json b/consul/config/consul.json new file mode 100644 index 0000000..45575db --- /dev/null +++ b/consul/config/consul.json @@ -0,0 +1,9 @@ +{ + "acl": { + "default_policy": "deny", + "enabled": false + }, + "ui_config": { + "enabled": true + } +} \ No newline at end of file diff --git a/consul/config/data-service.hcl b/consul/config/data-service.hcl deleted file mode 100644 index a87bccb..0000000 --- a/consul/config/data-service.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "data-service" - id = "data-service-1" - address = "data-service" - port = 8000 - - check { - http = "http://aktools:8080/quote_zh_a_hist?symbol=sh600000&period=daily&start_date=20220101&end_date=20220102" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_data_service_rule = "PathPrefix(`/api/data`)" - } -} \ No newline at end of file diff --git a/consul/config/data-service.json b/consul/config/data-service.json new file mode 100644 index 0000000..24faf96 --- /dev/null +++ b/consul/config/data-service.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "data-service", + "check": { + "http": "http://aktools:8080/api/public/stock_bid_ask_em?symbol=000001", + "interval": "10s", + "timeout": "5s" + }, + "id": "data-service-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_data_service_rule": "PathPrefix(`/api/data`)" + }, + "name": "data-service", + "port": 8000 + } +} \ No newline at end of file diff --git a/consul/config/emotion-service.hcl b/consul/config/emotion-service.hcl deleted file mode 100644 index bed3c45..0000000 --- a/consul/config/emotion-service.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "emotion-service" - id = "emotion-service-1" - address = "emotion-service" - port = 8002 - - check { - http = "http://emotion-service:8002/health" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_emotion_service_rule = "PathPrefix(`/api/emotion`)" - } -} \ No newline at end of file diff --git a/consul/config/emotion-service.json b/consul/config/emotion-service.json new file mode 100644 index 0000000..258d5c5 --- /dev/null +++ b/consul/config/emotion-service.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "emotion-service", + "check": { + "http": "http://emotion-service:8002/health", + "interval": "10s", + "timeout": "5s" + }, + "id": "emotion-service-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_emotion_service_rule": "PathPrefix(`/api/emotion`)" + }, + "name": "emotion-service", + "port": 8002 + } +} \ No newline at end of file diff --git a/consul/config/frontend.hcl b/consul/config/frontend.hcl deleted file mode 100644 index 24dc2aa..0000000 --- a/consul/config/frontend.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "frontend" - id = "frontend-1" - address = "frontend" - port = 80 - - check { - http = "http://frontend:80/" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_frontend_rule = "PathPrefix(`/`)" - } -} \ No newline at end of file diff --git a/consul/config/frontend.json b/consul/config/frontend.json new file mode 100644 index 0000000..51d7769 --- /dev/null +++ b/consul/config/frontend.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "frontend", + "check": { + "http": "http://frontend:80/", + "interval": "10s", + "timeout": "5s" + }, + "id": "frontend-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_frontend_rule": "PathPrefix(`/`)" + }, + "name": "frontend", + "port": 80 + } +} \ No newline at end of file diff --git a/consul/config/quant-service.hcl b/consul/config/quant-service.hcl deleted file mode 100644 index ae1434f..0000000 --- a/consul/config/quant-service.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "quant-service" - id = "quant-service-1" - address = "quant-service" - port = 8001 - - check { - http = "http://quant-service:8001/health" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_quant_service_rule = "PathPrefix(`/api/quant`)" - } -} \ No newline at end of file diff --git a/consul/config/quant-service.json b/consul/config/quant-service.json new file mode 100644 index 0000000..ed70c98 --- /dev/null +++ b/consul/config/quant-service.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "quant-service", + "check": { + "http": "http://quant-service:8001/health", + "interval": "10s", + "timeout": "5s" + }, + "id": "quant-service-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_quant_service_rule": "PathPrefix(`/api/quant`)" + }, + "name": "quant-service", + "port": 8001 + } +} \ No newline at end of file diff --git a/consul/config/recommend-service.hcl b/consul/config/recommend-service.hcl deleted file mode 100644 index 8b31706..0000000 --- a/consul/config/recommend-service.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "recommend-service" - id = "recommend-service-1" - address = "recommend-service" - port = 8003 - - check { - http = "http://recommend-service:8003/health" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_recommend_service_rule = "PathPrefix(`/api/recommend`)" - } -} \ No newline at end of file diff --git a/consul/config/recommend-service.json b/consul/config/recommend-service.json new file mode 100644 index 0000000..897d1c9 --- /dev/null +++ b/consul/config/recommend-service.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "recommend-service", + "check": { + "http": "http://recommend-service:8003/health", + "interval": "10s", + "timeout": "5s" + }, + "id": "recommend-service-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_recommend_service_rule": "PathPrefix(`/api/recommend`)" + }, + "name": "recommend-service", + "port": 8003 + } +} \ No newline at end of file diff --git a/consul/config/user-service.hcl b/consul/config/user-service.hcl deleted file mode 100644 index e498f3f..0000000 --- a/consul/config/user-service.hcl +++ /dev/null @@ -1,17 +0,0 @@ -service { - name = "user-service" - id = "user-service-1" - address = "user-service" - port = 8004 - - check { - http = "http://user-service:8004/health" - interval = "10s" - timeout = "5s" - } - - meta = { - traefik_enable = "true" - traefik_http_routers_user_service_rule = "PathPrefix(`/api/user`)" - } -} \ No newline at end of file diff --git a/consul/config/user-service.json b/consul/config/user-service.json new file mode 100644 index 0000000..0d96995 --- /dev/null +++ b/consul/config/user-service.json @@ -0,0 +1,17 @@ +{ + "service": { + "address": "user-service", + "check": { + "http": "http://user-service:8004/health", + "interval": "10s", + "timeout": "5s" + }, + "id": "user-service-1", + "meta": { + "traefik_enable": "true", + "traefik_http_routers_user_service_rule": "PathPrefix(`/api/user`)" + }, + "name": "user-service", + "port": 8004 + } +} \ No newline at end of file diff --git a/consul/config/whoami.json b/consul/config/whoami.json new file mode 100644 index 0000000..a4b24df --- /dev/null +++ b/consul/config/whoami.json @@ -0,0 +1,11 @@ +{ + "service": { + "name": "whoami", + "port": 80, + "tags": ["traefik.enable=true", "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)", "traefik.http.routers.whoami.entrypoints=web"], + "check": { + "http": "http://whoami:80", + "interval": "10s" + } + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 501f721..859da40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,31 +24,14 @@ services: retries: 3 traefik: - image: traefik:v2.9 - container_name: ari-traefik - restart: always - depends_on: - consul: - condition: service_healthy + image: traefik:v2.11 + command: + - --configFile=/etc/traefik/traefik.yml ports: - - "80:80" # 主入口 - - "8080:8080" # Dashboard + - "80:80" + - "8080:8080" # Traefik dashboard volumes: - ./traefik/traefik.yml:/etc/traefik/traefik.yml - - /var/run/docker.sock:/var/run/docker.sock:ro - command: - - --providers.consulcatalog=true - - --providers.consulcatalog.endpoint.address=consul:8500 - - --providers.consulcatalog.exposedbydefault=false - - --api.dashboard=true - - --log.level=INFO - networks: - - microservice-network - labels: - - "traefik.enable=true" - - "traefik.http.routers.traefik-dashboard.rule=PathPrefix(`/dashboard`) || PathPrefix(`/api`)" - - "traefik.http.routers.traefik-dashboard.service=api@internal" - - "traefik.http.routers.traefik-dashboard.entrypoints=web" data-service: build: ./services/data-service @@ -135,4 +118,9 @@ services: networks: - microservice-network environment: - - SERVICE_NAME=frontend \ No newline at end of file + - SERVICE_NAME=frontend + + whoami: + image: traefik/whoami + expose: + - "80" # 可选,Traefik 可以自动发现,不暴露到宿主机 diff --git a/traefik/traefik.yml b/traefik/traefik.yml index ebeb765..83d5232 100644 --- a/traefik/traefik.yml +++ b/traefik/traefik.yml @@ -1,7 +1,13 @@ entryPoints: web: address: ":80" -http: - middlewares: - compress: - compress: true \ No newline at end of file + +providers: + consulCatalog: + endpoint: + address: "consul:8500" + exposedByDefault: false + +api: + dashboard: true + insecure: true \ No newline at end of file