docker-compose.yml
version: '3.4'
services:
client:
image: ${DOCKER_REGISTRY-}client
build:
context: .
dockerfile: Client/Dockerfile
networks:
- daprdemo
client-dapr:
image: "daprio/daprd:1.13.2"
depends_on:
- client
network_mode: "service:client"
networks:
- daprdemo
server:
image: ${DOCKER_REGISTRY-}server
build:
context: .
dockerfile: Dapr.Server/Dockerfile
networks:
- daprdemo
server-dapr:
image: "daprio/daprd:1.13.2"
depends_on:
- server
networks:
- daprdemo
network_mode: "service:server"
envoy:
image: envoyproxy/envoy:v1.28.0
networks:
- daprdemo
envoy-dapr:
image: "daprio/daprd:1.13.2"
depends_on:
- envoy
networks:
- daprdemo
network_mode: "service:envoy"
dapr-placement:
image: "daprio/dapr:1.13.2"
networks:
daprdemo:
external: false
name: daprdemo
docker-compose.override.yml
version: '3.4'
services:
client:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "6001:80"
client-dapr:
command: ["./daprd",
"-app-id", "client",
"-app-port", "80",
"-placement-host-address", "dapr-placement:50000",
"-components-path", "/components",
"-config", "/configuration/config.yaml"
]
volumes:
- "./dapr/components/:/components"
- "./dapr/configuration/:/configuration"
server:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "7001:80"
server-dapr:
command: ["./daprd",
"-app-id", "server",
"-app-port", "80",
"-placement-host-address", "dapr-placement:50000",
"-components-path", "/components",
"-config", "/configuration/config.yaml"
]
volumes:
- "./dapr/components/:/components"
- "./dapr/configuration/:/configuration"
envoy:
ports:
- "8888:80"
volumes:
- "./envoy.yaml/:/etc/envoy/envoy.yaml"
envoy-dapr:
command: ["./daprd",
"-app-id", "envoy",
"-app-port", "80",
"-placement-host-address", "dapr-placement:50000",
"-components-path", "/components",
"-config", "/configuration/config.yaml"
]
volumes:
- "./dapr/components/:/components"
- "./dapr/configuration/:/configuration"
dapr-placement:
command: ["./placement", "-port", "50000", "-log-level", "debug"]
ports:
- "50000:50000"
envoy.yaml
# envoy.yaml
static_resources:
listeners:
- name: listener_0 # 监听器的名称
address:
socket_address:
address: 0.0.0.0 # 监听器的地址
port_value: 80 # 监听器的端口
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
http_filters: # 定义http过滤器链
- name: envoy.filters.http.router # 调用7层的路由过滤器
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- "*"
routes:
- match:
prefix: "/c/"
route:
auto_host_rewrite: true
prefix_rewrite: "/v1.0/invoke/client/method/"
cluster: dapr
- match:
prefix: "/s/"
route:
auto_host_rewrite: true
prefix_rewrite: "/v1.0/invoke/server/method/"
cluster: dapr
clusters:
- name: dapr
connect_timeout: 0.25s
type: STRICT_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: dapr
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 3500
docker-compose运行
docker-compose -f "C:\Users\用户\source\repos\DaprDemo\docker-compose.yml" -f "C:\Users\用户\source\repos\DaprDemo\docker-compose.override.yml" -f "C:\Users\用户\source\repos\DaprDemo\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose16114709943373327819 --ansi never up -d --no-build
访问
http://localhost:8888/c/swagger/index.html
源码地址
https://pan.baidu.com/s/1lE6OnfDbmzdKQF65wOan0g
提取码:a752