在 Docker 容器中构建用于生产的 Create React App
Building Create React App for production in Docker Container
我在为我的 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 步,returns 出现以下错误:Step 8/11 : COPY ./build /var/www lstat build: no such file or directory
根据我的理解,错误告诉我构建文件夹毕竟没有创建,因此无法移动。
这个 Dockerfile
使用 multi-stage build。第 8 步 - COPY ./build /var/www
失败,因为它试图将 build
目录从 nginx 映像(第二阶段,而不是从 yarn build
是 运行 的第一阶段)复制到 /var/www
,这是不存在的。
要使其正常工作,请指定应从第一阶段复制 build
目录(其中 yarn build
是 运行)。为此,进行以下更改:
- 通过将第一行更改为
FROM node:10.13.0 AS base
来命名基础阶段(可以使用任何名称而不是此处的 base
)。
- 将
COPY ./build /var/www
更改为 COPY --from=base ./build /var/www
表示我们要从第一阶段而不是第二阶段复制 build
目录。
我在为我的 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 步,returns 出现以下错误:Step 8/11 : COPY ./build /var/www lstat build: no such file or directory
根据我的理解,错误告诉我构建文件夹毕竟没有创建,因此无法移动。
这个 Dockerfile
使用 multi-stage build。第 8 步 - COPY ./build /var/www
失败,因为它试图将 build
目录从 nginx 映像(第二阶段,而不是从 yarn build
是 运行 的第一阶段)复制到 /var/www
,这是不存在的。
要使其正常工作,请指定应从第一阶段复制 build
目录(其中 yarn build
是 运行)。为此,进行以下更改:
- 通过将第一行更改为
FROM node:10.13.0 AS base
来命名基础阶段(可以使用任何名称而不是此处的base
)。 - 将
COPY ./build /var/www
更改为COPY --from=base ./build /var/www
表示我们要从第一阶段而不是第二阶段复制build
目录。