没有域名的Traefik
Traefik without domain name
很少!!
我是 Traefik 的新手,文档对尝试非常基本的测试没有帮助。
我正在尝试 运行 在他们的主页 link) 上给出的 traefik 基本示例)在远程服务器上,我使用 IP 地址访问它并且没有这样的域名.但是所有的证明和教程示例在我看来都是一样的——没有讨论如果一个人没有域名怎么办。 (两者都不能创建,因为服务器在 VPN 后面。)
问题:-
当我没有域名时,我应该如何配置 traefik.frontend.rule。如果我的 IP 地址是 xx.xx.xxx.xxx.
compose.yml
version: "3"
services:
traefik:
image: traefik:alpine
ports:
- 80:80
volumes:
- ${traefikConfigDirectory}:/etc/traefik
- /var/run/docker.sock:/var/run/docker.sock
# network_mode: host
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- traefik.frontend.rule=PathPrefixStrip:/testpath
# network_mode: host
config.toml
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[docker]
endpoint = "unix:///var/run/docker.sock"
exposedByDefault = false
usebindportip=false
[Update]
然而,正如@marvin 所建议的,我将 traefik.port=80 标签添加到 whoami 并且我已经放置了 network_mode: host
,我能够 运行。但是如何在不将 network_mode 放入主机的情况下使其成为 运行?
您不需要主机名。
IP 地址将指向您的 traefik:比方说 1.2.3.4:80(您确实不需要 80:这只是为了示例)
例如,对于某些 tomcat 应用程序(在 8080 上),规则可能是这样的:
- "traefik.docker.network: traefik"
- "traefik.frontend.rule=PathPrefixStrip: /somepath"
- "traefik.port=8080"
- ...
参见:规则中没有 ip。因为规则只是匹配ip或者domain之后的路径。
在这里,每次调用 1.2.3.4/somepath 都会重定向到 1.2.3.4:8080。您不必在 tomcat 容器上发布 8080 端口。
如果您的应用程序已经有路径,只需删除 "Strip" 部分:"PathPrefix: /somepath"
编辑:使用您的撰写
你的 compose 会变成那样的 stg(未测试):
version: "3"
services:
traefik:
image: traefik:alpine
...
volumes:
- ${traefikConfigDirectory}:/etc/traefik
- /var/run/docker.sock:/var/run/docker.sock
networks:
- traefik-net
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- traefik.frontend.rule=PathPrefixStrip:/testpath
- traefil.docker.network=traefik-net
networks:
- traefik-net
networks:
traefik-net: {}
很少!!
我是 Traefik 的新手,文档对尝试非常基本的测试没有帮助。
我正在尝试 运行 在他们的主页 link) 上给出的 traefik 基本示例)在远程服务器上,我使用 IP 地址访问它并且没有这样的域名.但是所有的证明和教程示例在我看来都是一样的——没有讨论如果一个人没有域名怎么办。 (两者都不能创建,因为服务器在 VPN 后面。)
问题:-
当我没有域名时,我应该如何配置 traefik.frontend.rule。如果我的 IP 地址是 xx.xx.xxx.xxx.
compose.yml
version: "3"
services:
traefik:
image: traefik:alpine
ports:
- 80:80
volumes:
- ${traefikConfigDirectory}:/etc/traefik
- /var/run/docker.sock:/var/run/docker.sock
# network_mode: host
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- traefik.frontend.rule=PathPrefixStrip:/testpath
# network_mode: host
config.toml
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[docker]
endpoint = "unix:///var/run/docker.sock"
exposedByDefault = false
usebindportip=false
[Update]
然而,正如@marvin 所建议的,我将 traefik.port=80 标签添加到 whoami 并且我已经放置了 network_mode: host
,我能够 运行。但是如何在不将 network_mode 放入主机的情况下使其成为 运行?
您不需要主机名。 IP 地址将指向您的 traefik:比方说 1.2.3.4:80(您确实不需要 80:这只是为了示例) 例如,对于某些 tomcat 应用程序(在 8080 上),规则可能是这样的:
- "traefik.docker.network: traefik"
- "traefik.frontend.rule=PathPrefixStrip: /somepath"
- "traefik.port=8080"
- ...
参见:规则中没有 ip。因为规则只是匹配ip或者domain之后的路径。
在这里,每次调用 1.2.3.4/somepath 都会重定向到 1.2.3.4:8080。您不必在 tomcat 容器上发布 8080 端口。 如果您的应用程序已经有路径,只需删除 "Strip" 部分:"PathPrefix: /somepath"
编辑:使用您的撰写
你的 compose 会变成那样的 stg(未测试):
version: "3"
services:
traefik:
image: traefik:alpine
...
volumes:
- ${traefikConfigDirectory}:/etc/traefik
- /var/run/docker.sock:/var/run/docker.sock
networks:
- traefik-net
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- traefik.frontend.rule=PathPrefixStrip:/testpath
- traefil.docker.network=traefik-net
networks:
- traefik-net
networks:
traefik-net: {}