Docker 的 Traefik 反向代理
Traefik Reverse Proxy with Docker
我有 docker 与 nginx 运行 组成以下配置:
version: "3"
services:
web:
image: nginx:alpine
volumes:
- ./nginx:/etc/nginx/conf.d/rainloop
ports:
- "8081:80"
labels:
- "traefik.frontend.rule=Host:www.example.com"
- "traefik.port=8081"
和 docker 中的 traefik - 使用以下配置组成:
version: '3'
services:
reverse-proxy:
image: traefik:alpine
command: --api --docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- ./traefik.toml:/etc/traefik/traefik.toml
traefik.toml 保持基本状态,看起来像这样
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
Web UI 显示如下
调用我的域时 www.example.com 我超时了。
您需要将两个容器放在同一个网络上。
在您的主机中创建一个 docker 网络。 docker network create {network name}
.
在您的 docker-compose
中,使用您创建的现有网络连接两个容器。您可以阅读 https://docs.docker.com/compose/networking/#use-a-pre-existing-network 了解如何使用它。
将每个服务添加到上述网络。
在您的 traefik.toml
中添加以下内容
[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
创建网络 docker network create traefik-net
使用
部署 traefik
version: '3'
services:
traefik:
image: traefik:latest
command: --api
ports:
- 80:80
- 8080:8080 # Port for the web UI
networks:
- traefik-net
使用
部署nginx
version: '3'
services:
frontend:
image: nginx
networks:
- traefik-net
labels:
- "traefik.docker.network=traefik-net"
- "traefik.frontend.rule=Host:${DOMAIN}"
- "traefik.backend=nginx"
- "traefik.port=80" # you should use exposed port, not published
我有 docker 与 nginx 运行 组成以下配置:
version: "3"
services:
web:
image: nginx:alpine
volumes:
- ./nginx:/etc/nginx/conf.d/rainloop
ports:
- "8081:80"
labels:
- "traefik.frontend.rule=Host:www.example.com"
- "traefik.port=8081"
和 docker 中的 traefik - 使用以下配置组成:
version: '3'
services:
reverse-proxy:
image: traefik:alpine
command: --api --docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- ./traefik.toml:/etc/traefik/traefik.toml
traefik.toml 保持基本状态,看起来像这样
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
Web UI 显示如下
调用我的域时 www.example.com 我超时了。
您需要将两个容器放在同一个网络上。
在您的主机中创建一个 docker 网络。
docker network create {network name}
.在您的
docker-compose
中,使用您创建的现有网络连接两个容器。您可以阅读 https://docs.docker.com/compose/networking/#use-a-pre-existing-network 了解如何使用它。将每个服务添加到上述网络。
在您的 traefik.toml
中添加以下内容[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
创建网络 docker network create traefik-net
使用
部署 traefikversion: '3'
services:
traefik:
image: traefik:latest
command: --api
ports:
- 80:80
- 8080:8080 # Port for the web UI
networks:
- traefik-net
使用
部署nginxversion: '3'
services:
frontend:
image: nginx
networks:
- traefik-net
labels:
- "traefik.docker.network=traefik-net"
- "traefik.frontend.rule=Host:${DOMAIN}"
- "traefik.backend=nginx"
- "traefik.port=80" # you should use exposed port, not published