Aar*_*suu 2 node.js npm docker reactjs
我正在使用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;"]
Run Code Online (Sandbox Code Playgroud)
但我相信 Dockerfile 在这里并不是极其重要。在我的源代码中有一个主配置文件,我想将其排除在外,docker image
以便能够轻松部署我的 React 应用程序。这会导致 Dockerfile 命令期间出现编译错误RUN npm run build
,因为编译器找不到另一个文件引用的文件。对于开发版本这不是问题,因为npm start
不是那么敏感。
我会将配置文件添加为docker volume
最终应用程序中的 a,这样代码就能够毫无问题地找到它。我只是想知道如何处理这样的情况,因为它还没有出现在我的道路上?
也请随意评论或优化我的Dockerfile
,因为我不确定 Nginx 是否适合网站前端应用程序的这些生产版本。
如果您的应用程序当前require
是配置文件,则类似于在构建时将值“硬编码”到其中,正如您所注意到的。如果您确实需要能够在运行时动态交换另一个配置文件,则需要使用egfetch()
来加载它,而不是捆绑它(就像require
那样)。
如果在构建时进行配置没问题,那么我还建议查看CRA 自定义环境变量;然后,您可以在构建时注入合适的值作为环境变量。
除此之外,如果您正在寻找对 Dockerfile 的批评,从一个 Aarni 到另一个:
npm ci
或构建期间执行任何操作来安装内容,则您的 package.json 就会损坏。应该是一个开发依赖项,而 Font Awesome 应该是一个常规依赖项。yarn
react-scripts
nano
和在临时容器中,即使你需要,一步一步vim
对他们也更好。apk add
# build env
FROM node:13.12.0-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm ci
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;"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11406 次 |
最近记录: |