我正在尝试在计算机上执行小型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版本是2008年3月19日,操作系统是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
正确的本地地址应为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
答案 0 :(得分:1)
确保容器内的应用正在侦听外部ip,而不仅是本地主机(127.0.0.1)。通常是通过监听*:8080或0.0.0.0:8080来完成的。
答案 1 :(得分:0)
从容器外部运行它:
settings.grid[x][y] = number
solve()
settings.grid[x][y] = 0 # <==== Right here