web-dev-qa-db-fra.com

Comment faire pour que Traefik redirige vers un port non-docker spécifique depuis Docker interne

Tout d'abord, je suis désolé si je n'utilise pas les bons termes pour poser cette question, mais je ne suis pas à la hauteur de la terminologie en place.

J'ai traefik exécuté dans un conteneur de docker et servant certains services avec l'option PathPrefix, par exemple, www.myserver.com/wordpress redirige vers un conteneur de docker exécutant wordpress.

Mais comment puis-je le rediriger vers l'extérieur d'un conteneur Docker? Plus précisément, comment puis-je obtenir www.myserver.com pour rediriger vers le port 8080 dans ma machine pour servir un service que j'y exécute dans le système d'exploitation hôte (pas dans un conteneur Docker)?

C'est mon traefik.toml:

logLevel = "DEBUG"
defaultEntryPoints = ["http", "https"]

[entryPoints]
    [entryPoints.http]
        address = ":80"
        compress = false
        [entryPoints.http.redirect]
            entryPoint = "https"
    [entryPoints.https]
        address = ":443"
        [entryPoints.https.tls]

[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
#onDemand = true
[[acme.domains]]
    main = "www.myserver.com"

[web]
address = ":8888"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "www.myserver.com"
watch = true
exposedbydefault = false

Et mon docker-compose.yml pour le conteneur traefik:

version: "2"

services:
  traefik:
    image: traefik
    network_mode: "Host"
    ports:
      - "80:80"
      - "443:443"
      - "8888:8888"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${SERVER_DIR}/AppData/traefik:/etc/traefik/
      - ${PWD}/acme.json:/acme.json
      - ${PWD}/traefik.toml:/etc/traefik/traefik.toml
      - ${PWD}/servers.toml:/etc/traefik/servers.toml
    restart: never
12
jbssm

J'ai tripoté et trouvé la réponse.

Dans traefik.toml ajouter:

################################################################
# File configuration backend
################################################################
# Enable file configuration backend
# Optional
[file]
        filename = "servers.toml"

# Enable watch file changes
        watch = true

Dans docker-compose.yml changer la volumes: à:

volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - ${SERVER_DIR}/AppData/traefik:/etc/traefik/
  - ${PWD}/acme.json:/acme.json
  - ${PWD}/traefik.toml:/etc/traefik/traefik.toml
  - ${PWD}/servers.toml:/servers.toml

Ajouter le fichier servers.toml:

loglevel = "ERROR"

[backends]
[backends.nasweb]
        [backends.nasweb.servers.nasweb]
            url = "http://192.168.1.11:8080"

[frontends]
        [frontends.domain]
                backend = "nasweb"
        [frontends.domain.routes.domain]
                rule = "Host:www.myserver.com"
10
jbssm