Compartilhar a janela de encaixe Vagrant para hospedar

1

Estou configurando uma caixa Vagrant com um ambiente de desenvolvimento. Eu tenho alguns aplicativos da web em execução, mais alguns serviços, um banco de dados e uma janela de encaixe dentro do Vagrant. A maioria dos serviços é usada internamente e eu faço o encaminhamento de porta para aplicativos da web que posso acessar em minha máquina host com localhost:FORWARDED_PORT .

Mas um desses aplicativos da Web precisa de algum JavaScript em execução no docker. Por isso, precisa acessá-lo do meu navegador da Web na máquina host. Internamente, posso ver isso:

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever

O serviço em execução no Docker está fornecendo JS estático em http://172.17.0.2:4567 . Eu preciso ser capaz de acessar esse endereço interno do aplicativo da web na máquina host, como posso configurá-lo?

    
por Fernando Briano 14.10.2014 / 14:14

2 respostas

1

Você não vê o IP interno do docker do lado de fora da VM da caixa vagrant. Mas você pode expor no container a porta do aplicativo (portanto, será uma porta que pode ser encaminhada como pertencente à VM vagrant) e se referir a esse JavaScript como o IP / nome externo se a caixa vagrant (mesmo se estiver usando o SERVER_NAME env var na página que coloca o link) e a porta correspondente.

    
por 14.10.2014 / 17:37
1

Eu estou fazendo exatamente esse tipo de coisa durante o meu trabalho diário. Há duas coisas a serem levadas em consideração aqui:

  1. A porta do serviço dockerized tem que ser encaminhada para o seu vm vagante
  2. A porta (agora apontando para o contêiner docker) na caixa vagrant tem que ser encaminhada para sua caixa física

Como não conheço seu serviço dockerized, tomo a distribuição padrão do Redis dockerizado como exemplo aqui. Como estou trabalhando com o figo ( link ) para iniciar meus contêineres docker, terei que mostrar a resposta para a primeira parte em um exemplo fig.yml :

redis:
  image: redis:latest
  ports:
   - "6379:6379"

Isso executa o Armazenamento de Valor-Chave do Redis em um contêiner de encaixe e encaminha sua porta 6379 para a porta 6379 na caixa do vagrant. Agora você pode se conectar ao Redis via localhost: 6379 do INSIDE vagrant vm, então estamos no meio do caminho.

O segundo passo é encaminhar isso para sua máquina local, adicionando isso ao seu Vagrantfile :

config.vm.network :forwarded_port, guest: 6379, host: 6379

Voila: Agora você pode acessar o Redis via localhost: 6379 da sua máquina física.

Para o seu caso, isso significa que você terá que alterar http://172.17.0.2:4567 para http://127.0.0.1:4567 no código da sua webapp, para que ele realmente use o encaminhamento de porta recém-configurado.

    
por 16.04.2015 / 12:17