您应该从docker-compose.yml文件中删除volumes:,并确保将应用程序代码COPY放入图像中。也不要忘记在Dockerfile中设置一个CMD。 Docker's核心概念之一是图像是应用程序的不可变self-contained副本。就像你不下载Firefox,然后单独下载它的源代码一样,图像应该可以自己运行。理想是能够跑步 docker run --name api -d -p 3000:3000 your-image 虽然这并不总是可能的,但一般来说,如果在Dockerfile或运行时选项中指定内容是合理的,那么最好将它们放在Dockerfile中。 另一个考虑因素是集群环境,如Kubernetes。在那里,几乎不可能将源代码上传到卷中,但使用Docker图像as-is非常简单。 我还看到一些问题出现在Dockerfile中,它被绑定挂载所隐藏。这可能是一个丢失的RUN chmod +x,或者偶尔图像会重新排列更多文件。如果您使用绑定装载覆盖图像内容,则您没有运行实际的图像,并且没有测试没有装载的标准设置。 特别是对于节点应用程序,“模式”似乎是使用绑定装载覆盖整个图像内容。但如果您正在这样做,那么您的自定义映像中就没有任何内容,您也可以使用绑定挂载运行node映像。但是如果你这样做,那么你更多的是围绕Docker's文件系统隔离工作,而不是从中受益;您也可以直