Итак, я поискал ответ по этому поводу, но либо люди не решают проблему, либо говорят, что нет проблем с этим на их компьютере (ma c или linux). Похоже, это может быть проблема windows.
У меня есть Spring api, работающий в контейнере docker (контейнер linux). Я использую docker desktop на windows, и я пытаюсь сделать запрос (в insomnia / postman / wtv) к этому api.
Если я запускаю 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, это будет работать без проблем:
Приложение Spring, работающее в контейнере docker
Проблема в том, что если я попытаюсь вызвать ту же конечную точку, что и раньше, с localhost, я не получу никакого ответа. Insomnia возвращает сообщение об ошибке: Ошибка: сервер ничего не вернул (без заголовков, без данных)
Я также пытался подключиться к ip контейнера (получил его от docker inspect), но безуспешно.
Порты представлены в docker -compose.yml. Что мне не хватает?
Заранее спасибо.