[英]Developing a spring boot application with docker on windows but run the docker container on a Ubuntu VM (as Docker Host)
[英]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 ,則此操作沒有問題:
問題是,如果我嘗試從 localhost 調用與以前相同的端點,我沒有得到任何響應。 Insomnia 返回錯誤:錯誤:服務器未返回任何內容(無標頭,無數據)
我也嘗試連接到容器的 ip (從 docker 檢查獲得)但沒有運氣。
端口在 docker-compose.yml 中公開。 我錯過了什么?
提前致謝。
端口映射不正確。Spring 啟動應用程序在容器內的 8080(從我看到的圖像)開始,它應該映射到容器內的 8080。
它應該如下所示:
ports:
- "8080:8080"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.