Не удалось подключиться к образу докера с помощью весеннего загрузочного приложения

Докерфайл

FROM openjdk:8 
ADD target/docker-spring-boot.jar docker-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]

команда для сборки докера

docker build -f Dockerfile -t docker-spring-boot .

Spring Boot Jar ниже.

target/docker-spring-boot.jar

команда для запуска докера

docker run -p 8085:8085 docker-spring-boot

Приложение нормально работает без докера. Не удалось запустить приложение на докере.

Ошибка:

This site can’t be reached

логи запуска докера

 E:\micorservices_samples\docker-spring-boot\docker-springbootdocker run -p 8085 :8085 docker-spring-boot

   .   ____          _            __ _ _  /\\ / ___'_ __ _ _(_)_ __  __
 _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ / _` | \ \ \ \  \/  ___)| |_)| | | | | || (_| |  ) ) ) )   '  |____| .__|_| |_|_| |_\__, | / / / / 
 =========|_|==============|___/=/_/_/_/  :: Spring Boot ::        (v2.1.4.RELEASE)

 2019-04-07 18:29:47.944  INFO 1 --- [           main]
 c.r.d.DockerSpringbootAppl ication        : Starting
 DockerSpringbootApplication v0.0.1-SNAPSHOT on 352ac4d 12009 with PID
 1 (/docker-spring-boot.jar started by root in /) 2019-04-07
 18:29:47.970  INFO 1 --- [main] c.r.d.DockerSpringbootAppl
 ication        : No active profile set, falling back to default
 profiles: defaul t 2019-04-07 18:29:54.302  INFO 1 --- [          
 main] o.s.b.w.embedded.tomcat.To mcatWebServer  : Tomcat initialized
 with port(s): 8085 (http) 2019-04-07 18:29:54.463  INFO 1 --- [       
 main] o.apache.catalina.core.Sta ndardService   : Starting service
 [Tomcat] 2019-04-07 18:29:54.464  INFO 1 --- [           main]
 org.apache.catalina.core.S tandardEngine  : Starting Servlet engine:
 [Apache Tomcat/9.0.17] 2019-04-07 18:29:54.854  INFO 1 --- [          
 main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring
 embedded WebApplicationContext 2019-04-07 18:29:54.855  INFO 1 --- [  
 main] o.s.web.context.ContextLoa der            : Root
 WebApplicationContext: initialization completed in 6539 ms 2019-04-07
 18:29:55.859  INFO 1 --- [main] o.s.s.concurrent.ThreadPoo
 lTaskExecutor  : Initializing ExecutorService
 'applicationTaskExecutor' 2019-04-07 18:29:56.691  INFO 1 --- [       
 main] o.s.b.w.embedded.tomcat.To mcatWebServer  : Tomcat started on
 port(s): 8085 (http) with context path '' 2019-04-07 18:29:56.705 
 INFO 1 --- [main] c.r.d.DockerSpringbootAppl ication       
 : Started DockerSpringbootApplication in 10.902 seconds (JVM runn ing
 for 12.566)



 C:\Users\Mabeldocker logs -f 20026c6c7602

   .   ____          _            __ _ _  /\\ / ___'_ __ _ _(_)_ __  __
 _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ / _` | \ \ \ \  \/  ___)| |_)| | | | | || (_| |  ) ) ) )   '  |____| .__|_| |_|_| |_\__, | / / / / 
 =========|_|==============|___/=/_/_/_/  :: Spring Boot ::        (v2.1.4.RELEASE)

 2019-04-07 18:51:23.381  INFO 1 --- [           main]
 c.r.d.DockerSpringbootAppl ication        : Starting
 DockerSpringbootApplication v0.0.1-SNAPSHOT on 20026c6 c7602 with PID
 1 (/dsb.jar started by root in /) 2019-04-07 18:51:23.403  INFO 1 ---
 [           main] c.r.d.DockerSpringbootAppl ication        : No
 active profile set, falling back to default profiles: defaul t
 2019-04-07 18:51:29.434  INFO 1 --- [main]
 o.s.b.w.embedded.tomcat.To mcatWebServer  : Tomcat initialized with
 port(s): 8085 (http) 2019-04-07 18:51:29.608  INFO 1 --- [          
 main] o.apache.catalina.core.Sta ndardService   : Starting service
 [Tomcat] 2019-04-07 18:51:29.613  INFO 1 --- [           main]
 org.apache.catalina.core.S tandardEngine  : Starting Servlet engine:
 [Apache Tomcat/9.0.17] 2019-04-07 18:51:30.012  INFO 1 --- [          
 main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring
 embedded WebApplicationContext 2019-04-07 18:51:30.014  INFO 1 --- [  
 main] o.s.web.context.ContextLoa der            : Root
 WebApplicationContext: initialization completed in 6275 ms 2019-04-07
 18:51:31.038  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoo
 lTaskExecutor  : Initializing ExecutorService
 'applicationTaskExecutor' 2019-04-07 18:51:31.879  INFO 1 --- [       
 main] o.s.b.w.embedded.tomcat.To mcatWebServer  : Tomcat started on
 port(s): 8085 (http) with context path '' 2019-04-07 18:51:31.895 
 INFO 1 --- [           main] c.r.d.DockerSpringbootAppl ication       
 : Started DockerSpringbootApplication in 10.631 seconds (JVM runn ing
 for 12.241)

Ссылка на гитхаб https://github.com/robert07ravikumar/spring-boot-докер

Не удалось подключиться к образу докера с помощью весеннего загрузочного приложения

не могли бы вы предоставить еще несколько выходных данных журнала. согласно журналам, ваше приложение работает, но когда вы нажимаете API, что происходит?

Kavyesh Shah 07.04.2019 20:47

запустите свое приложение с помощью docker run -d -p 8085:8085 image-name, а затем опубликуйте вывод docker logs -f container_id

Kavyesh Shah 07.04.2019 20:48

добавлены логи докера

Robert Ravikumar 07.04.2019 20:54

Как вы используете докер (Mac, Windows, Linux host, docker toolbox)? И включите значение echo $DOCKER_HOST.

BMitch 09.04.2019 10:29

$ echo $DOCKER_HOST tcp://192.168.99.100:2376 .Запуск докера в Windows 7 и набор инструментов докера.

Robert Ravikumar 09.04.2019 18:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
5
8 951
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я могу запустить весеннее загрузочное приложение с докером, как показано ниже:

FROM maven:3-alpine AS build-project
ADD . ./docker-spring-boot
WORKDIR /docker-spring-boot
RUN mvn clean install

FROM openjdk:8-jre-alpine
EXPOSE 8080
WORKDIR /app
COPY --from=build-project ./docker-spring-boot/target/docker-spring-boot-*.jar ./docker-spring-boot.jar
CMD ["java", "-jar", "docker-spring-boot.jar"]

Для команды запуска:

docker build -t docker-spring-boot .
docker run -it -d -p 8080:8080 docker-spring-boot

Вам нужно заменить докер-весна-загрузка на имя файла jar, расположенное в целевом файле после сборки.

пожалуйста, проверьте мой код и найдите ошибку, которую я делаю

Robert Ravikumar 07.04.2019 21:15

Имя моей банки — docker-spring-boot.jar.

Robert Ravikumar 07.04.2019 21:23

Можете ли вы войти в свой контейнер и отправить запрос на завивание, чтобы убедиться, что ваше приложение правильно работает внутри контейнера? docker exec -it containerId /bin/bash && curl http://localhost:8085

Emre Savcı 07.04.2019 21:27

root@a6664e1d3b83:/# curl локальный хост: 8085/отдых/докер/привет1 Greetingsroot@a6664e1d3b83:/# . Я могу получить ответ от URL-адреса завитка. @RestController

Robert Ravikumar 07.04.2019 21:38

Похоже, ваше приложение возвращает ответ, когда вы видите «Приветствие». Вы пытались отправить запрос с хост-компьютера? Какую ошибку вы видите?

Emre Savcı 07.04.2019 21:41

ответ хост-компьютера. Этот сайт недоступен. localhost отказался подключаться. Попробуйте: Проверка подключения Проверка прокси и брандмауэра ERR_CONNECTION_REFUSED

Robert Ravikumar 08.04.2019 02:46

Ваше приложение выглядит нормально, и кажется, что вы можете получить к нему доступ изнутри контейнера с локальным хостом в соответствии с вашим комментарием:

root@a6664e1d3b83:/# curl localhost:8085/rest/docker/hello1 
Greetings
root@a6664e1d3b83:/# . I am able to get the response from the curl url 

Вероятно, потому что Spring Boot будет привязан к локальному хосту по умолчанию (127.0.0.1). Вам нужно добавить следующие свойства для привязки ко всем хостам (или указать, какой IP для привязки):

server.address=0.0.0.0 # Bind all

В вашем application.properties

См. эта почта и Общие свойства Spring Boot

Ответ принят как подходящий

URL-адреса, которые я пробовал, были localhost, 127.0.0.1, 0.0.0.0 и т. д.

Приложение заработало, как только я запустил URL-адрес узла докера:

http://192.168.99.100:8085/rest/docker/hello1

Ваш код хорошо работает на любой машине UNIX, проблема связана с сетью Docker для версии Windows. По умолчанию при запуске Docker используется сеть мост, если не указано другое, но в Windows сеть Docker работает по-другому, вы можете проверить ссылку здесь для более подробной информации о проблеме. Это известная ошибка, но мы надеемся, что когда-нибудь она будет исправлена ​​командой Docker.

Элтон Стоунман в своем блоге также даст вам лучшее объяснение этой проблемы, см. следующий связь.

Это работа для меня. Здесь я использую терминал быстрого запуска docker (Oracle Virtual Box). Я попытался найти IP-адрес контейнера с помощью команды «docker-machine ip» в терминале быстрого запуска. Он дал мне ip вроде 192.168.99.100. Затем в браузере я ввел URL-адрес типа http://192.168.99.100:8080/привет1, и это дало ожидаемый результат. Итак, сначала попробуйте получить IP-адрес с помощью команды docker-machine ip.

в надежде, что это может помочь кому-то избежать того, что я только что пережил: понял, что я обновил свой application.properties / yml с помощью server.port: 8049, но мой файл для создания докеров сопоставил порты - '8049:8080'. отлично работал в среде IDE, но при попытке подключиться по telnet к подключенному контейнеру докеров соединение немедленно закрывалось. я унесу в могилу количество часов, которые я потратил впустую, пытаясь отследить это...

Другие вопросы по теме