Node.js Docker镜像构建卡在ReactJS的“npm安装”中
我正在为我的微服务应用程序制作一个kubernetes集群。 我正在构建docker映像,由于某种原因,它在@npm安装步骤中被卡住: 被困在这里: 当我使用node而不是node:alpine时,它会起作用。但它创建的图像大小为1GB+。这显然是我不想要的 注意:如果您想知道my package.json文件有什么内容,请注意:Node.js Docker镜像构建卡在ReactJS的“npm安装”中,node.js,reactjs,docker,npm,kubernetes,Node.js,Reactjs,Docker,Npm,Kubernetes,我正在为我的微服务应用程序制作一个kubernetes集群。 我正在构建docker映像,由于某种原因,它在@npm安装步骤中被卡住: 被困在这里: 当我使用node而不是node:alpine时,它会起作用。但它创建的图像大小为1GB+。这显然是我不想要的 注意:如果您想知道my package.json文件有什么内容,请注意: 我不确定运行npm install命令的问题是什么,这些日志似乎没有理由相信它们实际上有问题,我看到的只是一些关于某些软件包被弃用的警告消息,但事实上没有错误。不管怎
我不确定运行npm install命令的问题是什么,这些日志似乎没有理由相信它们实际上有问题,我看到的只是一些关于某些软件包被弃用的警告消息,但事实上没有错误。不管怎样,您说过当您使用node而不是node:alpine时,它确实起作用,这可以帮助我们 通常你想要的是:构建应用程序并让它在单独的docker层中运行。为此,可以使用多级docker构建。通过这种方式,您将拥有一个单独的环境,您可以在其中根据需要构建应用程序节点,并单独运行它,比如说最小nginx。下面您可以看到一个支持此概念的Dockerfile示例
# build environment
FROM node as build
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm install
COPY . ./
RUN npm run build
# production environment
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
你是说你得到了一个错误,但是我在docker build命令的日志中没有看到错误,只是一些关于一些软件包被弃用的警告,而且你应该尝试使用多阶段docker builds并实际构建react应用程序,而不是使用刚刚编辑过的dev versionI。你能帮忙吗?谢谢,这辆车造得真快。
FROM node:alpine
ENV CI=true
WORKDIR /app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "start"]
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
# build environment
FROM node as build
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm install
COPY . ./
RUN npm run build
# production environment
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]