docker - Traefik 在 Docker Swarm 中运行的基本配置
问题描述
据我所知,它是这样的:
docker-traefik.yml
:
version: '3'
services:
traefik:
image: traefik
command: --docker # enable Docker Provider
# use Docker Swarm Mode as data provider
--docker.swarmmode
ports:
- "80:80"
volumes:
# for it to be able to listen to Docker events
- /var/run/docker.sock:/var/run/docker.sock
docker-whoami.yml
:
version: '3'
networks:
traefik_default:
external: true
services:
whoami:
image: containous/whoami
networks:
# add to traefik network
- traefik_default
deploy:
labels:
# whoami is on port 80
- "traefik.port=80"
# whoami is on traefik_default network
- "traefik.docker.network=traefik_default"
# when to forward requests to whoami
- "traefik.frontend.rule=Host:example.com"
让我在这里引用文档:
所需标签:
traefik.frontend.rule
traefik.port
- 如果没有这个,调试日志将显示该服务被故意过滤掉。traefik.docker.network
- 如果没有这个,可能会出现 504。...
traefik.docker.network
覆盖用于连接到容器的默认 docker 网络。[1]
traefik.port=80
注册此端口。当容器暴露多个端口时很有用。
但是为什么不能将暴露的端口设置为默认值traefik.port
呢?从我所看到的情况来看,它可以在没有的情况下工作traefik.docker.network
(也就是说,如果traefik_default
是第一个服务的网络)。我什么时候可以得到 504?
解决方案
但是为什么不能将暴露的端口作为默认值 traefik.port 呢?
如果你的容器有 3 或 4 个暴露端口,traefik 应该使用哪个?那么谁对 traefik 说,这些端口中哪一个是正确的呢?所以你做 - 与traefik.port
。使用您配置的服务的默认端口的问题在哪里?
你应该公开 80、443 和 8080 - 所以 http/https 网页的 80 和 443 以及 traefik 仪表板的 8080。如果你不想使用仪表板,你不需要暴露 8080。
而且我在您的作曲家文件中没有看到任何网络配置@traefik - 这应该没有网络吗?你的服务和traefik需要在同一个网络中。否则 traefik 无法到达您的服务并转发。
端点在哪里?
推荐阅读
- java - 如何从 XML 文件中的标签中检索属性值
- postgresql - 在 GCP 上安装 Citus 失败
- c - 我们需要原始指针来释放c中的内存吗?
- regex - 我需要创建 Nginx 动态重写规则
- python - 为什么我在尝试使用 pyhon 编辑它时得到一个空文件?
- android - 基于屏幕尺寸的Android可绘制?
- swift - 如何在 SwiftUI 中使用 .Blur 作为 ViewModifier 在所有视图之上添加模糊覆盖
- swift - 从 UIPickerViewController 获取视频的创建日期 - Swift
- security - 如何满足 AKS 顾问建议“应避免以 root 用户身份运行容器”
- c# - 调用其他API时在.Net Core中改装包502 Bad Gateway错误