Question

Dockerfile Build Errors With React Static Site In App Platform

Posted March 19, 2021 577 views
DockerReactDigitalOcean App Platform

Problem
I’m using App Platform to serve a React (using Create React App) static website. I’m using Docker in order to have predictable and abstracted builds (as well as other reasons)

But whenever I try to deploy it to DO’s App Platform I get build errors essentially saying that it can’t find the output directory. Such as ‘client | 19:44:34 ! /app/build does not exist within the built container’

App.yaml

name: project_name

static_sites:
  - name: client
    dockerfile_path: ./client/Dockerfile
    github:
      repo: valencian-digital/unique-expressions
      branch: master
    source_dir: client
    output_dir: /app/build

Dockerfile

FROM node:14-alpine

WORKDIR /app
VOLUME /app

ENV NODE_ENV=production

COPY . .

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

Question
How can I get a Dockerfile to work property with App Platform static sites?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

To get this to work you should move the npm run build to be a RUN rather than CMD. The app platform build process will run all the steps that are part of a docker build. The CMD is set as a default start command for the container, but doesn’t get executed during the build process. The process to build a static site copies the files out of the built docker container image.

  • Yup, that’s the solution. This is the correct Dockerfile

    FROM node:14-alpine
    
    WORKDIR /app
    
    COPY ./package.json ./
    ENV NODE_ENV=production
    
    RUN npm install --production=false
    COPY . .
    
    RUN npm run build