Как мне заставить traefik работать на моей облачной архитектуре? - PullRequest
0 голосов
/ 05 сентября 2018

Хорошо, поэтому провел день на своем EC2 с настроенными Traefik и Docker, но, похоже, не работает, как описано в документации. Я могу запустить пример Whoami, но это на самом деле не иллюстрирует то, что я ищу?

В моем примере у меня есть три конечные точки шлюза API AWS, и мне нужно указать их на мой IP-адрес EC2, который маршрутизируется настройкой внешнего интерфейса Traefik, а затем использует какой-то бэкэнд? Что я до сих пор не знаю, какой бэкэнд использовать.

Кажется, я не могу найти хороший пример YAML, который бы четко иллюстрировал что-то, отвечающее моим целям и потребностям.

Кто-нибудь может указать мне правильное направление? Любой хороший пример Docker YAML примеров, настройка для моего примера ниже? Спасибо!

enter image description here

1 Ответ

0 голосов
/ 06 сентября 2018

Я взял эту статью в качестве руководства по обеспечению установки докера с помощью traefik.

РЕДАКТИРОВАТЬ: Перед этим создайте сеть Docker под названием прокси.

$ docker network create proxy

version: '3'

networks:
  proxy:
    external: true
  internal:
    external: false

services:
  reverse-proxy:
    image: traefik:latest # The official Traefik docker image
    command: --api --docker --acme.email="your-email" # Enables the web UI and tells Træfik to listen to docker
    restart: always
    labels:
      - traefik.frontend.rule=Host:traefik.your-server.net
      - traefik.port=8080
    networks:
      - proxy
    ports:
      - "80:80"     # The HTTP port
      - "8080:8080" # The Web UI (enabled by --api)
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - $PWD/traefik.toml:/etc/traefik/traefik.toml
      - $PWD/acme.json:/acme.json

  db:
    image: mariadb:10.3
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: r00tPassw0rd
    volumes:
      - vol-db:/var/lib/mysql
    networks:
      - internal # since you do not need to expose this via traefik, so just set it to internal network
    labels:
      - traefik.enable=false

  api-1:
    image: your-api-image
    restart: always
    networks:
      - internal
      - proxy
    labels:
      - "traefik.docker.network=proxy"
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:api1.yourdomain.com"
      - "traefik.port=80"
      - "traefik.protocol=http"

  api-2:
    image: your-api-2-image
    restart: always
    networks:
      - internal
      - proxy
    labels:
      - "traefik.docker.network=proxy"
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:api2.yourdomain.com"
      - "traefik.port=80"
      - "traefik.protocol=http"

Примечание. Используйте этот параметр, если вы также хотите включить SSL. Обратите внимание, что это может не работать на локальном сервере, так как letsencrypt не может выполнить задачу для настройки SSL. создайте пустой файл acme.json и установите для него разрешение 0600

touch acme.json chmod 0600 acme.json

После настройки всего,

docker-compose config # но это не обязательно.

, а затем

docker-compose up

Я разместил свой traefik.toml здесь

Надеюсь, это поможет. Дайте мне знать, если у вас возникнут какие-либо проблемы.

С уважением,

Kushal.

...