我正试图通过docker文件使用构建文件夹运行我的react应用程序。
当在没有docker的情况下尝试时,一切似乎都能正常运行,但当我使用docker文件运行时,会创建构建文件夹,但serve-s build命令在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)
但不是";serve-s构建";如果我使用CMD["npm","start"],它可以正常工作。
所提供的任何帮助都是有帮助的。
您只是在serve上得到了错误,因为这个问题与serve包不兼容,很可能是由于节点版本,carbon非常旧,不再被主动维护。检查您在本地计算机上使用的节点版本,并将该版本用于docker库。
您也可以使用COPY build build
而不是COPY . .
来只复制生成文件夹,这是您唯一需要的文件夹。这将使图像构建速度更快。
我在节点版本8(Windows(上得到了这个,升级到16+。