/ / mapping dei container sull'host docker / etc / hosts automaticamente con la stessa porta per ciascun container - docker, docker-compose

mappare i contenitori sull'host / etc / hosts del docker automaticamente con la stessa porta per ogni container - finestra mobile, finestra mobile - comporre

Ho una configurazione di base docker-compose composta da quanto segue:

  • subnet bridge docker a partire da 192.168.50.0/24
  • 4 servizi: coniglio, configurazione primaverile, tariffe, check-in
  • ognuno di questi servizi ha il suo nome hostcorrettamente impostato e in grado di trovarsi all'interno della sottorete (192.168.50.0). Gli IP sono attribuiti dinamicamente in questa sottorete e iniziano tutti sulla porta 8080 all'interno dei rispettivi contenitori.
  • Dall'host, la rete bridge è visibile e ogni istanza del contenitore è accessibile usando il suo IP.

Non riesco a risolvere queste voci host senza mappare una porta diversa da 8080 all'host docker.

Per questa voce nel mio host "s / etc / hosts: 192.168.50.1 tariffe checkin book di configurazione coniglio: i servizi sono accessibili solo se associo esplicitamente i servizi "porte 8080 alla porta 8081 del mio host, porta 8082, porta 8083 ... per ogni servizio nel file .yml.

C'è un altro modo per assicurarsi che i servizi siano rilevabili con il loro nome DNS anche dall'esterno della sottorete?

risposte:

1 per risposta № 1

Non è possibile associare tutti e 4 i contenitori alla stessa porta sull'host. Solo un contenitore per porta. Tuttavia, esistono alcune soluzioni alternative:

Opzione 1: utilizzare porte diverse per ciascun contenitore

  • Per esempio, associa le porte 8081, 8082, 8083 e 8084.
  • In / etc / hosts, mappare correttamente ciascun IP contenitore.
  • Specificare la porta oltre al nome host durante la connessione. Piace https://fares:8081

I tuoi / etc / hosts potrebbero apparire così:

192.168.50.1 fares
192.168.50.2 rabbit
...

Opzione 2: utilizzare un proxy inverso

È possibile impostare un addizionale Contenitore Docker come a proxy inverso nel tuo docker-compose.yml. Il contenitore proxy inverso può essere associato alla porta 8080 e inoltrare la richiesta al contenitore corretto in base al nome host. Non è necessario associare le porte agli altri contenitori sull'host perché il proxy inverso inoltra le richieste. C'è un post sul blog che spiega come funziona nel dettaglio: http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/