gpt4 book ai didi

scala - 已启动 Web 应用程序的 Docker 和 http url

转载 作者:行者123 更新时间:2023-12-02 21:23:32 25 4
gpt4 key购买 nike

我想在 docker 中运行我的 web 应用程序(用 java/scala 编写)。因此,我创建了以下 docker 文件:

FROM java
ADD 0/backend-assembly-1.1.jar /app/backend-assembly-1.1.jar
EXPOSE 80
ENTRYPOINT ["java", "-jar", "\/app\/backend-assembly-1.1.jar", "0.0.0.0", "80"]

当我使用 docker run 运行应用程序时,应用程序确实启动成功命令:
[DEBUG] [02/12/2017 21:28:56.940] [tkachuko-web-system-akka.actor.default-dispatcher-2] [akka://tkachuko-web-system/system/IO-TCP/selectors/$a/0] Successfully bound to /0:0:0:0:0:0:0:0:80

我确实知道 docker 镜像在虚拟机上运行,​​所以我决定找出虚拟机的 IP 地址:
docker inspect 7cf588493b41 | grep IP

它返回 "IPAddress": "172.17.0.2" .

然而,0.0.0.0 , localhost172.17.0.2可访问 ,但是当我在没有 docker(从命令行)的情况下运行所有​​内容时,一切都可以正常工作。 您能否指定可以访问我的应用程序的哪个地址?

以防万一:我使用的是 OS X。

谢谢你的帮助。

最佳答案

要在 Docker 之外使用,您需要将容器中的端口绑定(bind)到托管系统上的端口。你没有包含你的运行命令,但它需要是这样的。

    docker run -d -p 8080:80 <image-name>
这里的关键是 -p (或 --publish )标志,将本地端口绑定(bind)到容器端口。
-p local-port:container-port

-p 80:80 # bind local port 80 to container's port 80
-p 8080:80 # bind local port 8080 to container's port 80
如果您愿意,也可以仅将端口绑定(bind)到 Mac 的 localhost。
-p 127.0.0.1:8080:80
在上述所有情况下,您绑定(bind)的本地端口现在应该在 localhost 上响应,即
http://localhost:8080/
您通常还会在 EXPOSE 中包含端口。 Dockerfile 中的声明(您已经这样做了),但在技术上不需要发布端口。

关于scala - 已启动 Web 应用程序的 Docker 和 http url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com