【问题标题】:Building Create React App for production in Docker Container在 Docker 容器中构建用于生产的 Create React App
【发布时间】:2019-01-28 15:28:45
【问题描述】:

我在为我的 CRA 应用程序创建 docker 映像时遇到问题。这是我用于生产环境的 Dockerfile:

# base image
FROM node:10.13.0
# set working directory
WORKDIR /usr/src/app

# install and cache app dependencies
COPY package.json yarn.lock ./
RUN yarn

COPY . ./
# RUN yarn cache clean 
RUN yarn build

# Stage 2 - the production environment
FROM nginx:latest
# COPY build /usr/share/nginx/html
COPY ./build /var/www
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

docker build 进程成功运行到第 8 步,返回以下错误:Step 8/11 : COPY ./build /var/www lstat build: no such file or directory

据我了解,该错误告诉我构建文件夹毕竟没有创建,因此无法移动。

【问题讨论】:

    标签: reactjs docker deployment create-react-app


    【解决方案1】:

    这个Dockerfile 使用multi-stage build。第 8 步 - COPY ./build /var/www 失败,因为它试图将 build 目录从 nginx 映像(第二阶段,而不是从运行 yarn build 的第一阶段)复制到不存在的 /var/www

    要使其正常工作,请指定应从第一阶段(运行yarn build 的位置)复制build 目录。为此,请进行以下更改:

    1. 通过将第一行更改为 FROM node:10.13.0 AS base 来命名基础阶段(可以使用任何名称代替 base 此处)。
    2. COPY ./build /var/www 更改为COPY --from=base ./build /var/www 表示我们要从第一阶段而不是第二阶段复制build 目录。

    【讨论】:

    • 谢谢@Bless。您在回答中提到的是解决我的问题的主要部分。我遇到的另一个问题是 docker 版本不支持 AS 关键字和 --from 标志。因此,我不得不采纳您的建议并更新 docker。
    猜你喜欢
    • 2020-03-01
    • 2020-01-27
    • 2019-07-07
    • 2021-09-09
    • 1970-01-01
    • 2018-10-11
    • 2019-04-17
    • 2020-07-23
    • 1970-01-01
    相关资源
    最近更新 更多