【发布时间】:2022-01-10 13:06:25
【问题描述】:
我正在创建以下 Dockerfile:
FROM node:current-alpine as builder
COPY /webapp/public/* public/
COPY /webapp/src/* src/
COPY package.json package.json
COPY package-lock.json package-lock.json
RUN set NODE_OPTIONS=--openssl-legacy-provider
RUN npm install
CMD ["npm","start"]
EXPOSE 80
基于此directory。
我从 docker 日志中得到以下输出:/src/App.js 未找到模块:无法解析“/src”中的“./Configure/ConfigurationPage”。配置页面是位于here 的文件。这是什么原因造成的?
【问题讨论】:
-
您没有为您的图像配置任何 CMD 和/或 ENTRYPOINT。它使用基础镜像中的默认命令:即
node。由于这是一个交互式命令(即需要-it选项),而且我猜您是在后台启动图像(即使用-d),因此您的容器会在命令启动后立即退出。 -
@Zeitounator 容器在分离模式下运行,但是当我尝试 docker run -dt -i -p 3000:80 scatool 时,我仍然无法连接到 localhost:3000。知道为什么吗?
-
我的想法是,关于这种新情况的信息太少,不能冒险猜测它。查看您的日志,连接到您正在运行的容器并确保所有预期的进程都已启动,检查端口是否已打开......并edit您的问题与您的发现。
-
不是节点专家,但我真的很想知道如果你只依赖基础镜像中的
node命令,它会打开一个 nodejs 控制台,那么你的节点应用程序如何在你的容器中运行。您不应该在 Dockerfile 中添加一些CMD以使用容器启动您的应用程序吗? -
@Zeitounator 我更新了我的问题