Docker compose 仅使用docker compose router服务入口点的traefik v2.2帮助
开始学习docker,traefik在家玩 目标:将所有内容放在Docker compose 仅使用docker compose router服务入口点的traefik v2.2帮助,docker-compose,traefik,Docker Compose,Traefik,开始学习docker,traefik在家玩 目标:将所有内容放在docker compose.yml和.env文件中,了解基本知识,并进行相应的评论 想要从traefik.test.local/dashboard获取仪表板,而不是test.local:8080,同样地,应该从traefik.test.local/api访问api。所以不必考虑端口号 在/etc/hosts 127.0.0.1 test.local 127.0.0.1 traefik.test.local
docker compose.yml
和.env
文件中,了解基本知识,并进行相应的评论
想要从traefik.test.local/dashboard
获取仪表板,而不是test.local:8080
,同样地,应该从traefik.test.local/api
访问api。所以不必考虑端口号
在/etc/hosts
127.0.0.1 test.local
127.0.0.1 traefik.test.local
docker-compose.yml
version: "3.7"
services:
traefik:
# The official v2 Traefik docker image
image: traefik:v2.2
# Lets name the container
container_name: traefik
command:
# Enables the web UI
- "--api.insecure=true"
# Tells Traefik to listen to docker
- "--providers.docker"
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
#labels:
#- "traefik.http.routers.router.rule=Host(`traefik.test.local/dashboard`)"
#- "traefik.http.routers.router.rule=Host(`traefik.test.local/api`)"
restart:
always
无法理解如何从路由器连接到服务。如果我哪里做错了,也要纠正我。多谢各位
PS:OS:kde neon您可以使用以下定义实现这一点,您需要为路由器和服务添加标签,而不仅仅是路由器
proxy:
image: traefik:v2.1
command:
- '--providers.docker=true'
- '--entryPoints.web.address=:80'
- '--entryPoints.metrics.address=:8082'
- '--providers.providersThrottleDuration=2s'
- '--providers.docker.watch=true'
- '--providers.docker.swarmMode=true'
- '--providers.docker.swarmModeRefreshSeconds=15s'
- '--providers.docker.exposedbydefault=false'
- '--providers.docker.defaultRule=Host("traefik.lvh.me")'
- '--accessLog.bufferingSize=0'
- '--api=true'
- '--api.dashboard=true'
- '--api.insecure=true'
- '--ping.entryPoint=web'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro'
ports:
- '80:80'
- '8080:8080'
restart:
always
deploy:
labels:
- traefik.enable=true
- traefik.docker.network=monitoring
- traefik.http.services.traefik-dashboard.loadbalancer.server.port=8080
- traefik.http.routers.traefik-dashboard.rule=Host(`dashboard.traefik.lvh.me`)
- traefik.http.routers.traefik-dashboard.service=traefik-dashboard
- traefik.http.routers.traefik-dashboard.entrypoints=web
- traefik.http.services.traefik-api.loadbalancer.server.port=80
- traefik.http.routers.traefik-api.rule=Host(`api.traefik.lvh.me`)
- traefik.http.routers.traefik-api.service=traefik-api
- traefik.http.routers.traefik-api.entrypoints=web
logging:
driver: json-file
options:
'max-size': '10m'
'max-file': '5'
另外,如果您使用
lvh.me
域,则无需编辑/etc/hosts
OP可能需要一些解释+1代表lvh.me
。将dashboard.traefik.lvh.me
替换为traefik.lvh.me
=>traefik.lvh.me或traefik.lvh.me/dashboard
按要求转到traefik.lvh.me/dashboard
api.traefik.lvh.me
不会转到显示连接错误的任何位置。但是,traefik.lvh.me/api/rawdata
显示数据。因此,无法掌握dashboard.traefik.lvh.me
或api.traefik.lvh.me
的角色。api域被转发到端口80,默认情况下,这将显示404错误,与fo to时相同。你想在这里实现什么?为什么你甚至需要这个域名?对不起。我问了一个糟糕的问题。仪表板和api实际上都是从端口8080提供服务的。我在学习。希望你能理解。
127.0.0.1 test.local
127.0.0.1 traefik.test.local