我目前正在学习Docker,并试图遵循这门课程(https://devopswithdocker.com/part-1/section-6/)来发展我的技能。虽然到目前为止我能够做所有事情,但我仍然坚持这个练习(1.12页):
我已经做了一个Dockerfile来容器化项目(exampel-frontend),通过以下代码遵循read-me文件(https://github.com/docker-hy/material-applications/blob/main/example-frontend/README.md)的说明(实际上我已经写了几乎类似的,但这是可以在这里找到的解决方案:https://github.com/oneiromancy/devops-with-docker
FROM ubuntu:latest
WORKDIR /usr/src
COPY . .
RUN apt-get update && apt-get install -y curl && curl https://deb.nodesource.com/setup_14.x | apt-get install -y nodejs
RUN apt-get install -y npm && npm install && npm run build && npm install -g serve
CMD ["npx", "serve", "-s", "-l", "8080", "build"]
EXPOSE 8080
但是,当我构建并运行容器时:
docker build . -t hello-frontend
docker run -p 8080:8080 hello-frontend
出现以下错误:
file:///usr/local/lib/node_modules/serve/build/main.js:169
const ipAddress = request.socket.remoteAddress?.replace("::ffff:", "") ?? "unknown";
^
SyntaxError: Unexpected token '.'
at Loader.moduleStrategy (internal/modules/esm/translators.js:133:18)
at async link (internal/modules/esm/module_job.js:42:21)
你能帮我修复它,因为我需要这个应用程序运行以下练习...
谢谢大家!
3条答案
按热度按时间quhf5bfb1#
与其将映像基于
ubuntu:latest
并自行安装Node 14.x(该版本将于5月到期),您可能需要考虑将其切换到基于node:lts
的映像,该映像已经安装了最新的长期服务Node版本。然后你可以将你的Dockerfile文件缩减到
目前,Node的
lts
版本是版本18。如果您出于某种原因需要运行Node 14,可以使用node:14
映像。ddrv8njm2#
您的节点版本低于Node 12.22.9。
语法(?.)
该功能在Node 14中引入。
您需要升级您的Node版本,Node v19当前版本,但Active LTS版本为v18版本https://nodejs.org/en
此链接有助于更新节点版本如何在Ubuntu上安装特定版本的Node?
kupeojn63#
谢谢大家的回答!帮助我解决所有错误的最终版本是:
我面临的问题主要是因为我的Dockerfile中缺少
COPY package*.json ./
。我通过添加以下内容了解到这一点:运行
npm list
如果有人有同样的问题...