没有域名的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: {}