Docker compose - czy trzeba podawać numer portu w adresie do innego serwisu?

0

Hej, w tym filmie gość tłumaczy docker compose:

W 6:34 kończy pisać plik docker-compose.yml z serwisem i prostą apką webową.
Następnie w apce webowej korzysta z adresu: "http://nazwa-uslugi/endpoint" gdy chce wysyłać żądania do serwisu. Nie musi podawać portu, a i tak to działa

Gdy ja piszę swój plik docker-compose.yml dla przykładu dla dwóch aplikacji w Springu, to potem żeby drugi mógł strzelić i pobrać dane z pierwszego, to i tak w w aplikacji muszę podać adres z portem

Przykład:

version: "3"

services:
  first-service:
    build: ./sample-api-1
    ports: 
      - 8001:8080
  second-service:
    build: ./sample-api-2
    ports:
      - 8002:8080
    depends_on: 
      - first-service

W second-service, gdy mam kod wykonujący zapytanie http do pierwszego, to muszę w adresie i tak dać numer portu: http://first-service:8080, inaczej nie zadziała :(
Dlaczego?

0

A słyszałeś kiedyś o domyślnym porcie 80? Przyjrzyj się co on ma wpisane, a co ty.

0

Mapuje 8081 na domyślny port 80, dlatego tak działa to u niego.

0

W uproszczeniu kontenery mają swoją podsieć , docker ma swojego dns'a który ci dynamicznie mapuje nazwy na ip konkretnego kontenera.
Port-forwarding który robisz to z "podsieci" kontenerów na twój localhost hosta na ktorym je zainstalowany docker.
localhost na host a localhost na kontenerze to dwia różne "byty"

0

Czyli jak moja pierwsza apka spring bootowa będzie wystawiona na porcie 80, a nie 8080 (i analogicznie użyję tego w docker compose), to nie będę musiał podawać numeru portu w kodzie drugiego serwisu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1