【问题标题】:How can I get traefik to work on my cloud architecture?如何让 traefik 在我的云架构上工作?
【发布时间】:2018-09-05 19:22:40
【问题描述】:

好的,所以花了一天时间在我的 EC2 上设置 Traefik 和 Docker,但似乎不像文档中描述的那样工作。我可以运行 Whoami 示例,但这并不能真正说明我在寻找什么?

在我的示例中,我有三个 AWS API Gateway 端点,我需要将它们指向我的 EC2 IP 地址,该地址由我的 Traefik 前端设置路由,然后使用一些后端?我仍然不确定要使用哪种后端。

我似乎找不到一个很好的 YAML 示例来清楚地说明适合我的目的和需要的东西。

谁能指出我正确的方向?任何好的示例 Docker YAML 示例,下面为我的示例设置的配置?谢谢!

【问题讨论】:

  • 您到底需要什么?这是我能提供的。 1. 作为反向代理的 traefik 服务(支持 ssl) 2. 例如,2 个不同的 wordpress 安装。我不知道你是不是这个意思。如果是这样,我可以将其发布在答案中。
  • @Cooshal 1. 一个traefik作为反向代理,可以管理多个api端点并返回结果?

标签: amazon-web-services docker amazon-ec2 traefik


【解决方案1】:

我已将this 文章作为使用 traefik 配置 docker 安装的指南。

编辑:在此之前,创建一个名为 proxy 的 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,请使用此选项。请注意,这可能不适用于本地服务器,因为 letencrypt 无法完成 SSL 设置的挑战。 创建一个空白文件 acme.json 并将其权限设置为 0600

touch acme.json chmod 0600 acme.json

设置好一切后,

docker-compose config # 这是可选的。

然后,

docker-compose up

我已经发布了我的traefik.tomlhere

我希望这会有所帮助。 如果您遇到任何问题,请告诉我。

问候,

库沙尔。

【讨论】:

  • 好的,看起来很不错。为什么我需要为我的 api-1 或 api-2 提供图像?您是否可以使用现有图像指向您的端点,而不是创建自己的。谢谢!
  • 对于 api-1 和 api-2,这取决于。就我而言,我使用了 wordpress 图片。所以我可以托管多个 wordpress 安装,并提供对 SSL 的开箱即用支持。好消息是,您还可以在其他一些 docker-compose 文件中创建您的服务并将其链接到这个 traefik 网络。
猜你喜欢
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 2019-02-21
  • 2021-09-08
  • 2015-10-03
  • 2010-09-27
  • 2021-01-03
  • 1970-01-01
相关资源
最近更新 更多