Fix docker build (#2348)

* .eslintrc.json is required to build using react-scripts

* Remove the extra "deps" step

This step can be done as part of the build (faster and more reliable).

* Add a GitHub Actions to build the Docker image

Make sure that "docker build" is working on every pull request before landing on master.

* Update package-lock.json

* Add .prettierrc in the Docker image to avoid warnings in the build step

* Revert "Update package-lock.json"

This reverts commit 7ef2eaadfae610771987bc8155670b895c139e7b.

* Make sure that the 'node_modules' layer can be cached

if package and package-lock.json didn't changed
This commit is contained in:
Guillaume Grossetie 2020-11-07 23:22:19 +01:00 committed by GitHub
parent a05679b3c5
commit 5b63371c14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 18 deletions

View File

@ -2,6 +2,8 @@
!public/
!src/
!.npmrc
!.eslintrc.json
!.prettierrc
!package-lock.json
!package.json
!tsconfig.json

15
.github/workflows/build-docker.yml vendored Normal file
View File

@ -0,0 +1,15 @@
name: Build Docker image
on:
push:
branches:
- master
pull_request:
jobs:
build-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: docker build -t excalidraw .

View File

@ -1,25 +1,14 @@
FROM node:14-alpine AS deps
ARG REACT_APP_INCLUDE_GTAG=false
RUN mkdir /opt/node_app && chown node:node /opt/node_app
WORKDIR /opt/node_app
USER node
COPY package.json package-lock.json ./
RUN npm install --no-optional && npm cache clean --force
ENV PATH /opt/node_app/node_modules/.bin:$PATH
WORKDIR /opt/node_app
COPY . .
FROM node:14-alpine AS build
WORKDIR /opt/node_app
COPY package.json package-lock.json ./
RUN npm i --no-optional
ARG REACT_APP_INCLUDE_GTAG=false
ARG NODE_ENV=production
WORKDIR /opt/node_app
COPY --from=deps /opt/node_app .
COPY . .
RUN npm run build:app:docker
FROM nginx:1.17-alpine