Como expor a porta no contêiner docker

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 sem sucesso.

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

Mas não consigo alcançar esse ponto de extremidade do serviço da web.

eu) Estou expondo corretamente a porta do contêiner? I) Como solucionar problemas se é a porta que não está disponível ou se meu serviço da web simplesmente não está sendo chamado (seria bom poder shell no contêiner e apenas enrolar o endpoint).

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

Na verdade, executando docker, cada vez recupera um monte de jars. Entao arranque blocos (o wait tarefa), 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 eu não consigo obter o básico Hello World mensagem que um URI raiz deve retornar.

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run waitDownloading 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 Cromo, curl e wget dizem que a conexão é 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. 

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

Aqui está a referência do Docker: https://docs.docker.com/engine/reference/builder/#expose

Seu Dockerfile final deve ser assim:

FROM adzerk/boot-cljEXPOSE 8080WORKDIR /appCOPY . /app

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

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

docker-machine env

http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html

@ pratheek61 nenhum resultado . ‘netstat-tunl / grep 8080’ retorna vazio.

Você esqueceu de dizer o que acontece quando tenta se conectar ao serviço.

Você pode postar a saída de um ‘netstat-tunlp’?

@ MichaelHampton Absolutamente. Eu adicionei a saída do docker e que nada acontece ao tentar me conectar ao serviço da web.

@ prateek61, estou no OSX e, quando executo netstat-tunlp, ele me diz netstat: a opção requer um argumento – p.

Desculpe, basta fazer ‘netstat-tunl’ para OSX

@ prateek61 ‘netstat-tunl / wc’ tem mais de 500 linhas. Demora muito para copiar a coisa toda. Mas a saída parece [assim] (http://pastebin.com/3gypz8Xg).

@ Frye você vê 8080 listados na saída? Tente grepping para ele.