【发布时间】:2020-12-22 17:19:23
【问题描述】:
我正在使用 docker build 和以下 Dockerfile 创建一个 React 应用程序:
# build env
FROM node:13.12.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm ci
RUN npm install react-scripts -g
RUN npm install --save @fortawesome/fontawesome-free
RUN apk add nano
RUN apk add vim
COPY . ./
RUN npm run build
# production env
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
不过,我相信 Dockerfile 在这里并不是非常重要。在我的源代码中有一个主配置文件,我想将其排除在docker image 之外,以便能够轻松部署我的 React 应用程序。这会在 Dockerfile 命令RUN npm run build 期间导致编译错误,因为编译器找不到被另一个文件引用的文件。对于开发版本,这不是问题,因为npm start 不是那么敏感。
我会在最终应用程序中将配置文件添加为docker volume,这样代码就可以毫无问题地找到它。我只是想知道如何处理这样的情况,因为它没有在我的路径上更早出现?
也可以随意评论或优化我的Dockerfile,因为我不确定,例如Nginx 是否适合用于网站前端应用程序的这些生产构建。
【问题讨论】:
-
如果不涉及 Docker,您将如何解决这个问题?您可能仍想
npm run build并让面向生产的服务器提供预构建文件。
标签: node.js reactjs docker npm