| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # syntax=docker/dockerfile:1.4
- # 1. For build React app
- FROM node:lts AS development
- # Set working directory
- WORKDIR /app
- #
- COPY package.json /app/package.json
- COPY package-lock.json /app/package-lock.json
- # Same as npm install
- COPY .npmrc .
- COPY .yarnrc.yml .
- RUN npm ci
- COPY . /app
- ENV CI=true
- ENV PORT=3000
- CMD [ "npm", "start" ]
- FROM development AS build
- RUN npm run build
- FROM development as dev-envs
- RUN <<EOF
- apt-get update
- apt-get install -y --no-install-recommends git
- EOF
- RUN <<EOF
- useradd -s /bin/bash -m vscode
- groupadd docker
- usermod -aG docker vscode
- EOF
- # install Docker tools (cli, buildx, compose)
- COPY --from=gloursdocker/docker / /
- CMD [ "npm", "start" ]
- # 2. For Nginx setup
- FROM nginx:alpine
- # Copy config nginx
- COPY --from=build /app/.nginx/nginx.conf /etc/nginx/conf.d/default.conf
- WORKDIR /usr/share/nginx/html
- # Remove default nginx static assets
- RUN rm -rf ./*
- # Copy static assets from builder stage
- COPY --from=build /app/build .
- # Containers run nginx with global directives and daemon off
- ENTRYPOINT ["nginx", "-g", "daemon off;"]
|