Как я могу получить доступ к своему API, используя Traefik + Docker + Nodejs без номера порта в URL? - PullRequest
2 голосов
/ 30 апреля 2020

Это может быть дубликат: Доступ к контейнеру через порт 3000 через traefik , но это решение с v1 из traefik.

Здравствуйте, ребята, в настоящее время я разрабатывал две вещи:

  • реагирует приложение на порт 3001
  • приложение узла на порт 3000

Позже они будут работать в одном домене, и я хочу работать таким же образом при разработке .

Я решил посвятить себя traefik для этой потребности ..

version: '3.7'

services:
  traefik:
    image: traefik:v2.2
    command: 
      - --api.insecure=true 
      # Docker
      - --providers.docker 
      - --providers.docker.exposedByDefault=false 
      - --providers.docker.network=internal
      - --entrypoints.web.address=:80v02.api.letsencrypt.org/directory
      # Config
      - --accesslog=true
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  whoami:
    image: emilevauge/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost.test`)"
      - "traefik.enable=true"
  api:
    container_name: api
    build:
      context: .
      target: development
    labels:
      #- "traefik.http.services.api-service.loadbalancer.server.port=3000"
      - "traefik.http.routers.api-router.rule=Host(`api.brainstoo.localhost.test`)"
      - "traefik.enable=true"

Сейчас я могу получить доступ к своему API с помощью URL: api.brainstoo.localhost.test: 3000 Но я бы хотел получить к нему доступ напрямую через api.brainstoo.localhost.test без порта. Если я прокомментирую или раскомментирую строку ** # - "traefik.http.services.apiservice.loadbalancer.server.port = 3000" ** ничего не изменится.

Я не знаю, что я делаю неправильно. Возможно, я не совсем понял, решит ли traefik такие вопросы.

Примечание: я уже настроил файл / etc / hosts

Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2020

Моя docker конфигурация для моего приложения была слишком длинной, но. Я должен был опубликовать все это, потому что это была проблема сети!

Теперь, когда все в одной сети, оно работает!

...