没有域名的Traefik

时间:2019-02-04 07:04:17

标签: docker traefik

很少!

我是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
  

[更新]

但是,按照@marvin的建议,我在traami中添加了traefik.port = 80标签,并且我还放了network_mode: host,所以我可以运行了。但是如何在不将network_mode托管的情况下使其运行?

1 个答案:

答案 0 :(得分:2)

您不需要主机名。 IP地址将指向您的traefik:假设是1.2.3.4:80(您实际上并不需要80:仅用于示例) 例如,对于某些tomcat应用程序(在8080上),规则可能是这样的:

- "traefik.docker.network: traefik"
- "traefik.frontend.rule=PathPrefixStrip: /somepath"
- "traefik.port=8080"
- ...

请参阅:规则中没有IP。因为该规则仅匹配ip或域之后的路径。

在这里,每次调用 1.2.3.4/somepath 都会重定向到 1.2.3.4:8080 。您不必在tomcat容器上发布8080端口。 如果您的应用程序已有路径,则只需删除“ Strip”部分:“ PathPrefix:/ somepath”

编辑:带有您的文字

您的撰写将变成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: {}