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