Я запустил веб-службу в контейнере докеров на настраиваемом порту (8080). Здесь я пытаюсь запустить контейнер, открывая соответствующий порт контейнера (как видел здесь), но безрезультатно.
docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
Но я не могу достичь этой конечной точки веб-службы.
я) Правильно ли я выставляю порт контейнера? II) Как можно устранить неполадки, если это порт, который недоступен, или если моя веб-служба просто не вызывается (было бы неплохо иметь возможность выполнить оболочку в контейнере и просто скрутить конечную точку).
Мой Dockerfile можно увидеть Вот. И я использую Adzerk boot-clj базовое изображение.
Собственно докер запущен, каждый раз извлекает кучу банок. затем ботинок блоки ( wait
задача), чего я и хочу (веб-сервер будет обрабатывать веб-запросы). И вот где я потерялся. Загрузка в докере блокируется, как я просил. Но я не могу понять основные Привет мир сообщение, что корневой URI должен вернуться.
$ 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.
В Хром, curl и wget сообщают, что в соединении отказано.
$ 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.
Вам нужно добавить EXPOSE
в ваш Dockerfile для порта 8080.
Вот ссылка из Docker: https://docs.docker.com/engine/reference/builder/#expose
Ваш последний Dockerfile должен выглядеть так:
FROM adzerk/boot-clj
EXPOSE 8080
WORKDIR /app
COPY . /app
переключатель -p пробьет дыру через мост между вашим хостом и вашим экземпляром докера, -p host_port: docker_instance_port
Теперь вам нужно выяснить, где находится ваш докер-хост. Если вы используете VirtualBox, попробуйте запустить:
докер-машина env
http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html