Я пытаюсь запустить небольшой Scala сервер на моем компьютере, код работает хорошо, поэтому проблема, на мой взгляд, заключается в docker стороне.
Здесь вы можете увидеть мой Dockerfile:
FROM java:8-jdk-alpine
RUN apk add --update \
curl \
&& rm -rf /var/cache/apk/*
COPY ./target/scala-2.13/hello-world-assembly-1.0.jar /usr/app/
EXPOSE 8080
WORKDIR /usr/app
CMD ["java", "-jar", "hello-world-assembly-1.0.jar"]
Команда построения: docker build -t carloshn90/first-scala-server:latest .
Выполнение команды: docker run -p 8080:8080 --name scala-server -it carloshn90/first-scala-server:latest
Проблема заключается в том, что при попытке выполнить завиток внутри контейнера работает хорошо : docker exec scala-server curl localhost:8080
но не снаружи.
Docker состояние контейнера:
![docker ps status](https://i.stack.imgur.com/9ATMl.png)
Завиток внутри контейнера:
![curl inside container](https://i.stack.imgur.com/dllLY.png)
Наконец, здесь та же завивка, но снаружи контейнера:
![curl outside container](https://i.stack.imgur.com/vb1yf.png)
Моя docker версия - 19.03.08, а операционная система - macOS Catalina.
Буду признателен, если у кого-то есть идеи о том, как решить эту проблему
------- - Решение --------
Может быть, эта информация полезна для других, в моем случае проблема заключалась в том, что вместо локального адреса был localhost 0.0.0.0:
/usr/app # netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:http-alt 0.0.0.0:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 172119
W тогда правильный локальный адрес должен быть 0.0.0.0
/usr/app # netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:http-alt 0.0.0.0:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 215241