Como expor porta no contêiner do docker

2

Eu executei um serviço da Web em um contêiner docker em uma porta personalizada (8080). Aqui, estou tentando executar um contêiner, expondo a porta do contêiner relevante (como visto aqui ), mas o não adiantou.

docker run -p 127.0.0.1:8080:8080 beatthemarket run wait

Mas parece que não consigo alcançar o endpoint do serviço da Web.

i) Estou expondo corretamente a porta do contêiner? ii) Como posso solucionar problemas se a porta não estiver disponível ou se meu serviço da Web não estiver sendo chamado (seria bom poder entrar no contêiner e apenas enrolar o ponto final).

Meu Dockerfile pode ser visto aqui . E estou usando a imagem de base do boot-clj do Adzerk

Na verdade, executando o docker, cada vez recupera um monte de frascos. Em seguida, os blocos boot (a tarefa wait ), que é o que eu quero (um servidor web estará lidando com solicitações da web) . E é aqui que estou perdido. Inicialize, no docker, bloqueia como eu pedi. Mas parece que não consigo receber a mensagem básica Hello World de que um URI raiz deve retornar .

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
Downloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar...
Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/
Retrieving pod-2.5.5.jar from https://clojars.org/repo/
Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/
Retrieving core-2.5.5.jar from https://clojars.org/repo/
...
Implicit target dir is deprecated, please use the target task instead.
Set BOOT_EMIT_TARGET=no to disable implicit target dir.

O Chrome , o curl e o wget dizem que a conexão foi recusada.

$ curl http://127.0.0.1:8080/
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused

$ wget http://127.0.0.1:8080/
--2016-04-21 20:07:32--  http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... failed: Connection refused. 
    
por Frye 22.04.2016 / 01:27

2 respostas

4

Você precisa adicionar a instrução EXPOSE ao seu Dockerfile para a porta 8080.

Veja a referência do Docker: link

Seu Dockerfile final deve ficar assim:

FROM adzerk/boot-clj

EXPOSE 8080

WORKDIR /app
COPY . /app
    
por 22.04.2016 / 05:07
0

o comutador -p fará um furo na sua ponte de host para a instância do docker, -p host_port: docker_instance_port

Agora você precisa descobrir onde fica seu host do docker. Se você estiver usando o VirtualBox, tente executar:

docker-machine env

link

    
por 24.07.2018 / 18:51