【发布时间】:2022-01-09 06:18:37
【问题描述】:
我有一个项目,在本地运行时,输出server started at /127.0.0.1:5000,我可以在该端口上本地访问它。
我正在尝试通过 docker 运行它。我有以下内容:
DockerFile:
FROM mozilla/sbt
ADD build.sbt /root/build/
RUN cd /root/build && sbt compile
EXPOSE 5000
WORKDIR /root/build
CMD sbt run
还有以下docker-compose.yml:
version: '3.1'
services:
sbt:
build:
context: ./
dockerfile: ./Dockerfile
image: sbt
ports:
- "8080:5000"
volumes:
- "./:/root/build"
我尝试通过docker-compose up运行它,我可以看到有关服务器启动的日志,但无法通过指定端口访问服务,即8080。我错过了什么吗?
仅供参考,上述设置的灵感来自 post,我在其中更改了基本映像,还去掉了我不理解的 external-network 位。
【问题讨论】:
-
添加 build.sbt 可能有助于有人重现这一点。仅使用 Dockerfile 构建和运行时可以访问它吗?
-
试图弄清楚如何在直接从 dockerfile 运行时挂载卷。它不喜欢它:
docker run -it -v "./:/root/build" $(docker build -q .) -
任何输出“服务器开始于 127.0.0.1:5000”的东西都可能无法从 Docker 外部访问。您没有说明容器中的进程是什么(可能是基于 Scala 的),但将其设置为侦听 0.0.0.0 可能会使容器间通信和
ports:设置起作用。参见例如Docker app server ip address 127.0.0.1 difference of 0.0.0.0 ip。 -
bravo @DavidMaze 做到了 :) 你想将其作为答案发布,还是我应该自己发布答案?