ng服务在Docker容器中不起作用

ng服务在Docker容器中不起作用,第1张

ng服务在Docker容器中不起作用

在您的Dockerfile中,您缺少Expose行,例如:

EXPOSE 4200

尝试将其放在docker文件中的最后一个RUN命令之前。

该行显示了容器本身中的端口(在这种情况下为4200),因此来自compose的映射起作用(80:4200)。

Compose只是这样做:将80从主机转发到容器中的4200。但是它并不知道或不在乎4200是否正在被收听。dockerfile中的Expose可确保何时构建映像,以便为将来运行的容器公开此端口,以便您的ng服务可以收听它。


解析度

因此,要获取所需的内容

docker-compose run
,请使用
publish
发布端口。由于
run
不使用您的映射
docker-compose.yml
,因此会忽略它们。所以像这样使用它:

docker-compose run --publish 80:4200 node bash

然后创建有角度的应用程序,然后按您的方式启动它。


测试示例以供将来参考

cd tmp
(或任何可写文件夹)

ng new myProject

cd myProject

ng serve --host 0.0.0.0
(–host 0.0.0.0监听容器中的所有接口)

然后在浏览器中,转到

localhost
,您将看到角度欢迎页面,因为端口
4200
已发布,并
80
通过如上所示的publish命令绑定到主机端口。

每次遇到端口转发问题时,如果打开一个新终端,将另一个终端保留在执行原始终端的位置

run command
并运行,则
dockerps
您会在“端口”列中看到以下内容:

0.0.0.0:80->4200/tcp
这意味着端口80上的主机已成功转发到端口4200中的容器。

如果看到类似

4200/tcp
而不是该
->
部分的内容,则表示没有发布任何映射或端口。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4906738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存