无法 运行 为我的 React 应用程序服务 -s build inside docker image

Unable to run serve -s build inside docker image for my react application

我正在尝试 运行 我的 React 应用程序通过 docker 文件使用构建文件夹。

在没有 docker 的情况下尝试时,一切似乎都 运行 正确,但是当我 运行 使用 docker 文件构建文件夹被创建时,但 serve -s 构建命令是在 docker 图像中不起作用。 下面是我的 docker 文件。

FROM node:carbon

# Create app directory
WORKDIR /usr/src/docker-react-sample

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
COPY package-lock.json ./
RUN npm install
#To bundle your app’s source code inside the Docker image, use the COPY instruction:
COPY . .
# Build for production.
RUN npm run build

# Install `serve` to run the application.
RUN npm install -g serve

# Uses port which is used by the actual application
EXPOSE 3000

# Run application
#CMD [ "npm", "start" ]
CMD serve -s build

下面是我用 docker

运行 时得到的错误
/usr/local/lib/node_modules/serve/node_modules/camelcase/index.js:3
const UPPERCASE = /[\p{Lu}]/u;
                  ^

SyntaxError: Invalid regular expression: /[\p{Lu}]/: Invalid escape
    at Object.<anonymous> (/usr/local/lib/node_modules/serve/node_modules/camelcase/index.js:3:19)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/serve/node_modules/boxen/index.js:6:19)
    at Module._compile (module.js:653:30)

但是如果我使用 CMD ["npm", "start"] 它可以正常工作,而不是“serve -s build”。

提供的任何帮助都会有所帮助。

你只是在服务上收到错误,因为问题与服务包不兼容,很可能是由于节点版本,carbon 很旧,不再积极维护。检查您在本地计算机上使用的节点版本,并将该版本用于您的 docker 基础。

您也可以执行 COPY build build 而不是 COPY . . 来仅复制构建文件夹,这是您唯一需要的文件夹。这将使图像构建速度更快。

我在节点版本 8(Windows) 上安装了这个,升级到 16+。