Jak odpalić Vue Dev Server wewnątrz Dockera z podaniem niestandardowej domeny?

0

To, co próbuję zrobić, to odpalić aplikację Vue pod domeną local.myapp.com zamiast pod localhost:jakiś_port.

Mam w /etc/hosts wpis 127.0.0.1 local.myapp.com, a w docker-compose wystawiłem port 80 ports: '80:80'

Jak odpalę z poziomu hosta yarn serve --port=80 --host=local.myapp.com to wszystko śmiga i mogę wejść na local.myapp.com. Niestety nie potrafię osiągnąć tego samego, gdy odpalam tę komendę z wewnątrz kontenera.

Próbowałem odpalić w kontenerze yarn serve --port=80, ale dostaję błąd Invalid Host header. Sam błąd chyba jest generowany przez dev serwer, więc obstawiam, że request trafia do kontenera i jest przechwycony przez dev server, ale ponieważ yarn serve domyślnie nasłuchuje na 0.0.0.0, to stąd ten błąd.

Jak odpalę yarn serve --port=80 --host=local.myapp.com dostaję błąd ERR_EMPTY_RESPONSE, natomiast jak zrobię wget http://local.myapp.com:80 wewnątrz kontenera, to wszystko działa. Czyli tutaj z kolei request z przeglądarki chyba nie trafia nawet do kontenera.

Jest jakiś sposób, żeby odpalić moją apkę na local.myapp.com:80 używając dockera?

0

--host=0.0.0.0

nie dziękuj

0

@Lucassith: --host=0.0.0.0 to domyślna wartość parametru --host. To już robiłem i dostałem błąd Invalid Host header.

0

0.0.0.0 nie jest domyślne
musisz jeszcze dodać

// vue.config.js
module.exports = {
    // options...
    devServer: {
        disableHostCheck: true
    }
}
0

https://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise.

A czemu muszę to wyłączyć? Lokalnie działało bez tej flagi.

0

Kolego, chyba trochę mylisz pojęcia. Moduł Net NodeJS nie ma nic do vue dev server.

1

By Default vue dev server zbinduje na domyślny aktywny interfejs sieciowy. To oznacza, że uruchamiając serwer lokalnie będziesz miał host === localhost, czyli weryfikacja przejdzie pomyślnie.
Gdy odpalasz dockera, automatycznie tworzony jest wewnętrzny bridgowany interfejs sieciowy.
Tutaj mamy dwie rzeczy

  1. By default vue-dev-server zbinduje swój aktywny interfejs sieciowy, w przypadku dockera nie będzie to Twój główny interfejs tylko kontenera i nie będzie on dostępny od strony Ciebie jako hosta. Dlatego musisz zbindować się na wszystkie interfejsy poprzez ustawienie --host=0.0.0.0 (tak na prawdę to nie musisz na wszystkie interfejsy, może być na IP bramy dockera, ale ona może się zmienić)
  2. Jak już zbindujesz się na 0.0.0.0 to automatycznie weryfikacja hosta nie przejdzie, bo Ty jako osoba wykonująca zapytanie !== host wewnątrz dockera.

Osobiście uważam, że ta walidacja hosta po stronie vue-dev-server jest zwykłym psikusem ze strony devów i nie rozwiązuje żadnych problemów z bezpieczeństwem.

0

Czyli z tego co piszesz wynika, że nie da się tego zrobić bez ustawienia tej flagi. Dzięki :)

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