簡體   English   中英

從 Z0F4137ED15025B504542Z85B 主機向在 docker 容器中運行的 spring api 發出請求

[英]Make a request to a spring api running in a docker container from windows host

所以,我四處尋找關於這個問題的答案,但要么人們沒有解決這個問題,要么他們說在他們的計算機(mac 或 linux)上這樣做沒有問題。 看起來這可能是 windows 問題。

我有一個 spring api 在 docker 容器(Linux 容器)上運行。 我在 windows 上使用 docker 桌面,我正在嘗試向 api 提出請求(在失眠/郵遞員/wtv中)。

如果我在本地運行 api,則以下請求可以完美運行:

http://localhost:8080/api/task/

這將列出多個任務元素。

我已經像這樣容器化了這個應用程序:

Dockerfile

FROM openjdk:11.0.7
COPY ./target/spring-api-0.0.1-SNAPSHOT.jar /usr/app/
WORKDIR /usr/app
RUN sh -c 'touch spring-api-0.0.1-SNAPSHOT.jar'
ENTRYPOINT ["java", "-jar", "spring-api-0.0.1-SNAPSHOT.jar"]

docker-compose.yml

version: '3.8'
services:
  api:
    build: .
    depends_on:
      - mysql
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/test?createDatabaseIfNotExist=true
    ports:
      - "8080:80"

  mysql:
    image: mysql
    ports:
      - "3306:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_USER=root
    - MYSQL_PASSWORD=root
    - MYSQL_DATABASE=test

如果我執行 docker-compose ,則此操作沒有問題:

在 docker 容器上運行的 Spring 應用程序

問題是,如果我嘗試從 localhost 調用與以前相同的端點,我沒有得到任何響應。 Insomnia 返回錯誤:錯誤:服務器未返回任何內容(無標頭,無數據)

我也嘗試連接到容器的 ip (從 docker 檢查獲得)但沒有運氣。

端口在 docker-compose.yml 中公開。 我錯過了什么?

提前致謝。

端口映射不正確。Spring 啟動應用程序在容器內的 8080(從我看到的圖像)開始,它應該映射到容器內的 8080。

它應該如下所示:

ports:
  - "8080:8080"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM