1

I have a React application that I dockerized as a multi-stage build. First it builds the application to the /app/build directory and then nginx tries to copy that to serve it.

FROM node:alpine as build
WORKDIR /app
ADD package.json /app
RUN npm install
ADD . /app
CMD ["npm", "run", "build"]

FROM nginx:alpine
COPY --from=build /app/build/ /usr/share/nginx/html

However when I try to build the image, the second stage can't seem to copy /app/build from the previous stage.

$ docker build -t foo .
...
Step 8/8 : COPY --fromm=build /app/build /usr/share/nginx/html
COPY failed: stat /var/lib/docker/overlay2/cf1f4930e894ad5b1d404943fb81e45cdd06b8a39abe434a342f5f90f4a1f58f/merged/app/build: no such file or directory

What is wrong and how do I fix it?

fabiomaia
  • 592
  • 9
  • 19

1 Answers1

3

The problem was the final step in the first stage where

CMD ["npm", "run", "build"]

should be

RUN npm run build

See difference between CMD and RUN.

fabiomaia
  • 592
  • 9
  • 19