简体   繁体   中英

Traefik Reverse Proxy with Docker

I have docker compose with nginx running with the following config:

version: "3"

services:
  web:
    image: nginx:alpine
    volumes:
     - ./nginx:/etc/nginx/conf.d/rainloop
    ports:
     - "8081:80"

    labels:
     - "traefik.frontend.rule=Host:www.example.com"
     - "traefik.port=8081"

and traefik in docker-compose with the following config:

version: '3'

services:
  reverse-proxy:
    image: traefik:alpine 
    command: --api --docker 

    ports:
      - "80:80"     # The HTTP port
      - "8080:8080" # The Web UI (enabled by --api)
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
      - ./traefik.toml:/etc/traefik/traefik.toml

the traefik.toml is kept basic and looks like this

defaultEntryPoints = ["http"]

[entryPoints]
  [entryPoints.http]
  address = ":80"

The Web UI shows the following

在此处输入图片说明

When calling my domain www.example.com I get a timeout.

Add the following in your traefik.toml

[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true

Create a network with docker network create traefik-net

Deploy traefik with

version: '3'
services:
  traefik:
    image: traefik:latest
    command: --api
    ports:
      - 80:80
      - 8080:8080 # Port for the web UI
    networks:
      - traefik-net

Deploy nginx with

version: '3'
services:
  frontend:
    image: nginx
    networks:
    - traefik-net
    labels:
    - "traefik.docker.network=traefik-net"
    - "traefik.frontend.rule=Host:${DOMAIN}"
    - "traefik.backend=nginx"
    - "traefik.port=80" # you should use exposed port, not published

You need to put both container on same network.

  1. Create a docker network inside your host machine. docker network create {network name} .

  2. In your docker-compose use the existing network that you created to connect both containers. You can read https://docs.docker.com/compose/networking/#use-a-pre-existing-network on how to use it.

  3. Add each service to the above network.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM