【问题标题】:How to serve static content in a Node Express container with Docker?如何使用 Docker 在 Node Express 容器中提供静态内容?
【发布时间】:2016-08-25 19:58:49
【问题描述】:

我用express generator创建了一个项目,项目中自动包含了app.js中的public文件夹...

我正在尝试在我的 index.ejs 中显示图像,但它无法正常工作... 正确的网址是什么?

网上看了下说src应该是这个img src="localhost:8000/images/1.png"

但是,我使用的是 docker 工具箱,所以我使用的是 docker 快速启动终端,并通过使用 docker i.p 让它工作

就像 img src="127.432.343:8000/images/1.png" 但是该 IP 是特定于我的计算机的,我希望我的同事能够看到图像而无需重构代码...

我的容器的名称是 web 所以我也试过了我试过 src="web:8000/images/1.png"

但这不起作用,我觉得它应该,任何提示请在这里尝试几个小时。

另外,如果这要在服务器上投入生产,那么最好的方法是什么?如果我最终将代码上传到 AWS,我不想更改代码......

【问题讨论】:

  • 你能发布“docker ps”的输出吗?

标签: javascript node.js express docker ejs


【解决方案1】:

你可以切换到Docker for Mac吗?这将允许您在本地主机上看到它

【讨论】:

    【解决方案2】:

    express 中的静态内容必须在 /public 文件夹中。公共/图像文件夹下的图像。如果您的图片在该文件夹中,那么应该可以从您所说的网址访问它。

    要从 ejs 文件中显示它,您只需指向 images/1.png(使用相对路径):

    <img src="images/i.png" />
    

    这样,您将其上传到任何生产服务器都不会遇到任何问题。

    对于您网络中的其他计算机来测试您的项目,您需要检查您计算机的本地网络 ip (ipconfig / ifconfig) 并使用 ip 地址端口 8000 进行测试。并非每个内部网络都完全配置了 DNS。

    同时检查您计算机的防火墙以允许 tcp 流量通过端口 8000。希望对您有所帮助。

    【讨论】:

    • 我尝试了 images/1.png 并无济于事:/是因为它在 Docker 中并通过 express 运行吗?基本上它在虚拟机上运行,​​我的终端被 sshed 到
    • 哦!对于 VM,您应该将 VM 配置为使用桥接网络。默认情况下,它们使用 NAT 适配器。
    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多