In correlation with the end of life (EOL) for MKE 3.5.x, maintenance of this documentation set was discontinued as of 2023-NOV-22. Click here for the latest MKE 3.x version documentation.
Use context or path-based routing¶
This topic describes how to publish a service using context or path-based routing.
Create an overlay network to isolate and secure service traffic:
docker network create -d overlay demo
Example output:
1se1glh749q1i4pw0kf26mfx5
Create the initial service:
docker service create \ --name demo \ --network demo \ --detach=false \ --label com.docker.lb.hosts=demo.local \ --label com.docker.lb.port=8080 \ --label com.docker.lb.context_root=/app \ --label com.docker.lb.context_root_rewrite=true \ --env METADATA="demo-context-root" \ mirantiseng/docker-demo
Interlock detects when the service is available and publishes it.
Note
Interlock only supports one path per host for each service cluster. When a specific
com.docker.lb.hostslabel is applied, it cannot be applied again in the same service cluster.After the tasks are running and the proxy service is updated, the application is available at
http://demo.local:curl -vs -H "Host: demo.local" http://127.0.0.1/app/
Example output:
* Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 80 (#0) > GET /app/ HTTP/1.1 > Host: demo.local > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.13.6 < Date: Fri, 17 Nov 2017 14:25:17 GMT < Content-Type: text/html; charset=utf-8 < Transfer-Encoding: chunked < Connection: keep-alive < x-request-id: 077d18b67831519defca158e6f009f82 < x-proxy-id: 77c0c37d2c46 < x-server-info: interlock/2.0.0-dev (732c77e7) linux/amd64 < x-upstream-addr: 10.0.1.3:8080 < x-upstream-response-time: 1510928717.306