同一应用程序无法通过Docker Compose发送HTTP请求 [英] Same app can't send http request by docker compose

查看:89
本文介绍了同一应用程序无法通过Docker Compose发送HTTP请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Spring boot

Spring boot

改造2

docker

在我的docker-compose文件中:

in my docker-compose file:

version: "3"

services:
  server:
    image: asubscriber/eshop:1.0.1
    build: .
    ports:
      - 8090:8090




  1. 像这样从控制台运行我的应用程序(春季启动):

  1. Run my app (Spring boot) from console like this:

java -jar build / libs / eshop-1.0.1.jar eshop-1.0.1。 jar

java -jar build/libs/eshop-1.0.1.jar eshop-1.0.1.jar

运行成功。并成功向http请求。在这里记录:

Run success. And success to http request. Here log:

[INFO ] 2020-03-14 21:41:09.480 [OkHttp http://localhost:8091/...] OkHttpClient - --> POST http://localhost:8091/api/v1/notifyEmail?emailTo=a_subscriber%40mail.ru&action=order_update&orderId=38 http/1.1
[INFO ] 2020-03-14 21:41:09.480 [OkHttp http://localhost:8091/...] OkHttpClient - Content-Length: 0
[INFO ] 2020-03-14 21:41:09.480 [OkHttp http://localhost:8091/...] OkHttpClient - 
[INFO ] 2020-03-14 21:41:09.481 [OkHttp http://localhost:8091/...] OkHttpClient - 
[INFO ] 2020-03-14 21:41:09.481 [OkHttp http://localhost:8091/...] OkHttpClient - --> END POST (0-byte body)
[INFO ] 2020-03-14 21:41:12.732 [OkHttp http://localhost:8091/...] OkHttpClient - <-- 200  http://localhost:8091/api/v1/notifyEmail?emailTo=a_subscriber%40mail.ru&action=order_update&orderId=38 (3250ms)
[INFO ] 2020-03-14 21:41:12.732 [OkHttp http://localhost:8091/...] OkHttpClient - Content-Type: application/json
[INFO ] 2020-03-14 21:41:12.732 [OkHttp http://localhost:8091/...] OkHttpClient - Transfer-Encoding: chunked
[INFO ] 2020-03-14 21:41:12.732 [OkHttp http://localhost:8091/...] OkHttpClient - Date: Sat, 14 Mar 2020 19:41:12 GMT
[INFO ] 2020-03-14 21:41:12.733 [OkHttp http://localhost:8091/...] OkHttpClient - Keep-Alive: timeout=60
[INFO ] 2020-03-14 21:41:12.733 [OkHttp http://localhost:8091/...] OkHttpClient - Connection: keep-alive
[INFO ] 2020-03-14 21:41:12.734 [OkHttp http://localhost:8091/...] OkHttpClient - 
[INFO ] 2020-03-14 21:41:12.734 [OkHttp http://localhost:8091/...] OkHttpClient - {"code":0,"message":"Success"}

好。很好成功发送POST http请求。

Nice. It's work fine. Success send POST http request.


  1. 现在我运行 SAME MY app docker compose

  1. Now I run SAME MY app by docker compose

docker-compose up

docker-compose up

成功运行应用程式。
但是如果我想创建http请求,则会出现错误:

Success run app. But if I want to create http request I get error:

Failed to connect to localhost/127.0.0.1:8091


server_1  | [INFO ] 2020-03-14 19:37:29.526 [OkHttp http://localhost:8091/...] OkHttpClient - --> POST http://localhost:8091/api/v1/notifyEmail?emailTo=a_subscriber%40mail.ru&action=order_update&orderId=4 http/1.1
server_1  | [INFO ] 2020-03-14 19:37:29.527 [OkHttp http://localhost:8091/...] OkHttpClient - Content-Length: 0
server_1  | [INFO ] 2020-03-14 19:37:29.527 [OkHttp http://localhost:8091/...] OkHttpClient - 
server_1  | [INFO ] 2020-03-14 19:37:29.527 [OkHttp http://localhost:8091/...] OkHttpClient - 
server_1  | [INFO ] 2020-03-14 19:37:29.527 [OkHttp http://localhost:8091/...] OkHttpClient - --> END POST (0-byte body)
server_1  | [DEBUG] 2020-03-14 19:37:29.529 [http-nio-8090-exec-5] SQL - select user0_.id as id1_3_, user0_.active as active2_3_, user0_.created as created3_3_, user0_.password as password4_3_, user0_.updated as updated5_3_, user0_.username as username6_3_ from usr user0_ where user0_.username=?
server_1  | [DEBUG] 2020-03-14 19:37:29.530 [http-nio-8090-exec-5] SQL - select roles0_.user_id as user_id1_2_0_, roles0_.role as role2_2_0_ from user_roles roles0_ where roles0_.user_id=?
server_1  | [DEBUG] 2020-03-14 19:37:29.530 [http-nio-8090-exec-5] SQL - select orders0_.user_id as user_id7_1_0_, orders0_.id as id1_1_0_, orders0_.id as id1_1_1_, orders0_.category_id as category6_1_1_, orders0_.created as created2_1_1_, orders0_.description as descript3_1_1_, orders0_.name as name4_1_1_, orders0_.updated as updated5_1_1_, orders0_.user_id as user_id7_1_1_ from orders orders0_ where orders0_.user_id=?
server_1  | [DEBUG] 2020-03-14 19:37:29.531 [http-nio-8090-exec-5] SQL - select orders0_.id as id1_1_, orders0_.category_id as category6_1_, orders0_.created as created2_1_, orders0_.description as descript3_1_, orders0_.name as name4_1_, orders0_.updated as updated5_1_, orders0_.user_id as user_id7_1_ from orders orders0_ where orders0_.user_id=?
server_1  | [DEBUG] 2020-03-14 19:37:29.536 [http-nio-8090-exec-5] SQL - select category0_.id as id1_0_0_, category0_.created as created2_0_0_, category0_.description as descript3_0_0_, category0_.name as name4_0_0_, category0_.updated as updated5_0_0_, orders1_.id as id1_1_1_, orders1_.category_id as category6_1_1_, orders1_.created as created2_1_1_, orders1_.description as descript3_1_1_, orders1_.name as name4_1_1_, orders1_.updated as updated5_1_1_, orders1_.user_id as user_id7_1_1_, user2_.id as id1_3_2_, user2_.active as active2_3_2_, user2_.created as created3_3_2_, user2_.password as password4_3_2_, user2_.updated as updated5_3_2_, user2_.username as username6_3_2_, roles3_.user_id as user_id1_2_3_, roles3_.role as role2_2_3_ from category category0_ left outer join orders orders1_ on category0_.id=orders1_.category_id left outer join usr user2_ on orders1_.user_id=user2_.id left outer join user_roles roles3_ on user2_.id=roles3_.user_id where category0_.id=?
server_1  | [INFO ] 2020-03-14 19:37:29.538 [OkHttp http://localhost:8091/...] OkHttpClient - <-- HTTP FAILED: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:8091
server_1  | [ERROR] 2020-03-14 19:37:29.539 [OkHttp http://localhost:8091/...] DefaultRestClientCallback - onFailure: Error: Failed to connect to localhost/127.0.0.1:8091
server_1  | java.net.ConnectException: Failed to connect to localhost/127.0.0.1:8091
server_1  |     at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:265) ~[okhttp-3.14.4.jar!/:?]
server_1  |     at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:183) ~[okhttp-3.14.4.jar!/:?]
server_1  |     at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224) ~[okhttp-3.14.4.jar!/:?]
server_1  |     at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108) ~[okhttp-3.14.4.jar!/:?]

为什么同一个应用程序无法在docker上运行?

Why same app not work from docker?

推荐答案

将此应用添加到docker中的服务中组成文件(仅网络部分)

add this to your service in docker-compose file (only the network part)

version: "3"

services:
  server:
    image: asubscriber/eshop:1.0.1
    build:
      context: .

    network_mode: "host"

    expose:
        - 9080

这是一个使它起作用的答案,最好阅读,如谢尔盖·佩图宁(Sergei Petunin)在上述评论中所述。

This is an answer to just make it works, it's better to read this, as Sergei Petunin mentiond in the comments above.

这篇关于同一应用程序无法通过Docker Compose发送HTTP请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆