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

How to serve static content in a Node Express container with Docker?

我使用 express generator 创建了一个项目,它自动将 public 文件夹包含在 app.js ...

我正在尝试在我的 index.ejs 中显示图像,但它不起作用... 什么是正确的 url 使用?

网上查了一下说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,我不想更改代码 ...

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

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

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

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

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

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

你有机会切换到 Docker for Mac 吗?这样你就可以在 localhost

上看到它