如何使用Docker在Node Express容器中提供静态内容?

时间:2016-08-25 19:58:49

标签: javascript node.js express docker ejs

我使用express生成器来创建一个项目,该项目自动包含app.js中的公共文件夹...

我正在尝试在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,我不想更改代码......

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

同时检查您计算机的防火墙,以允许通过端口8000进行TCP通信。希望它有所帮助。

答案 1 :(得分:0)

您有机会切换到Docker for Mac吗?这样你就可以在localhost上看到它了