【问题标题】:Traefik Reverse Proxy with Letsencrypt Docker ComposeTraefik 反向代理与 Letsencrypt Docker Compose
【发布时间】:2018-07-08 02:05:27
【问题描述】:

我从 Google Domains 购买了一个域名。我将 DNS 记录更改为 cloudflare。然后我创建了一个.htpasswd 文件并将其保存到/docker/shared/ 我还创建了一个位于/etc/traefik/rules.tomlrules.toml 文件我在这个文件中没有放置任何内容。

我有一个位于 /docker/traefik/traefik.toml 的文件,该文件包含以下内容(我将 EMAIL 和 DOMAIN 更改为我的):

#debug = true

logLevel = "ERROR" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
InsecureSkipVerify = true 
defaultEntryPoints = ["https", "http"]

# WEB interface of Traefik - it will show web page with overview of frontend and backend configurations 
[web]
address = ":8080"
  [web.auth.basic]
  usersFile = "/shared/.htpasswd"

# Force HTTPS
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[file]
  watch = true
  filename = "/etc/traefik/rules.toml"

# Let's encrypt configuration
[acme]
email = "email@domain.com" #any email id will work
storage="/etc/traefik/acme/acme.json"
entryPoint = "https"
acmeLogging=true 
onDemand = false #create certificate when container is created
[acme.dnsChallenge]
  provider = "cloudflare"
  delayBeforeCheck = 0
[[acme.domains]]
   main = "EXAMPLE.COM"
[[acme.domains]]
   main = "*.EXAMPLE.COM"

# Connection to docker host system (docker.sock)
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "EXAMPLE.COM"
watch = true
# This will hide all docker containers that don't have explicitly  
# set label to "enable"
exposedbydefault = false

这是我的 docker-compose 文件:

version: "3.6"
services:

  portainer:
    image: portainer/portainer
    container_name: portainer
    restart: always
    command: --templates http://templates/templates.json
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/portainer/data:/data
      - ${USERDIR}/docker/shared:/shared
    environment:
      - TZ=${TZ}

  watchtower:
    container_name: watchtower
    restart: always
    image: v2tec/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --schedule "0 0 4 * * *" --cleanup

  netdata:
    container_name: vigilant_aryabhata
    restart: always
    image: titpetric/netdata
    ports:
      - "19999:19999"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=${TZ}
  traefik:
    hostname: traefik
    image: traefik:latest
    container_name: traefik
    restart: always
    domainname: ${DOMAINNAME}
    networks:
#      - default
      - traefik_proxy
    ports:
      - "80:80"
      - "443:443"
#      - "8080:8080"
    environment:
      - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
      - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
#      - "traefik.frontend.rule=Host:traefik.${DOMAINNAME}"
      - "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /traefik"
      - "traefik.port=8080"
      - "traefik.docker.network=traefik_proxy"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/traefik:/etc/traefik
      - ${USERDIR}/docker/shared:/shared

networks:
   traefik_proxy:
     external:
       name: traefik_proxy
   default:
     driver: bridge

然后我运行:

docker-compose -f ${USERDIR}/docker/docker-compose.yml up -d

然后我运行:

steve@TeamAmerica-PlexServer:~/docker$ docker-compose logs -tf --tail="50" 

然后给我以下错误:

traefikAttaching to traefik
traefik       | 2018-07-08T01:15:14.506938691Z time="2018-07-08T01:15:14Z" level=error msg="Error starting provider *file.Provider: error reading configuration file: /etc/traefik/rules.toml - open /etc/traefik/rules.toml: no such file or directory"

从这里我真的不知道该怎么做。

【问题讨论】:

  • /etc/traefik/ 作为卷挂载?如果你从配置中删除你的 rules.toml 你会得到同样的错误?
  • 我会注释掉文件名,看看会发生什么。这很奇怪,因为它确实存在。

标签: docker docker-compose traefik


【解决方案1】:

我还创建了一个位于 /etc/traefik/rules.toml 的 rules.toml 文件,我在该文件中没有放置任何内容。

在您的配置中列出:

[file]
watch = true
filename = "/etc/traefik/rules.toml"

它是否位于您的机器上:${USERDIR}/docker/traefik?让容器可以访问它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多