Dockerfile 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # syntax=docker/dockerfile:1.4
  2. # 1. For build React app
  3. FROM node:lts AS development
  4. # Set working directory
  5. WORKDIR /app
  6. #
  7. COPY package.json /app/package.json
  8. COPY package-lock.json /app/package-lock.json
  9. # Same as npm install
  10. COPY .npmrc .
  11. COPY .yarnrc.yml .
  12. RUN npm ci
  13. COPY . /app
  14. ENV CI=true
  15. ENV PORT=3000
  16. CMD [ "npm", "start" ]
  17. FROM development AS build
  18. RUN npm run build
  19. FROM development as dev-envs
  20. RUN <<EOF
  21. apt-get update
  22. apt-get install -y --no-install-recommends git
  23. EOF
  24. RUN <<EOF
  25. useradd -s /bin/bash -m vscode
  26. groupadd docker
  27. usermod -aG docker vscode
  28. EOF
  29. # install Docker tools (cli, buildx, compose)
  30. COPY --from=gloursdocker/docker / /
  31. CMD [ "npm", "start" ]
  32. # 2. For Nginx setup
  33. FROM nginx:alpine
  34. # Copy config nginx
  35. COPY --from=build /app/.nginx/nginx.conf /etc/nginx/conf.d/default.conf
  36. WORKDIR /usr/share/nginx/html
  37. # Remove default nginx static assets
  38. RUN rm -rf ./*
  39. # Copy static assets from builder stage
  40. COPY --from=build /app/build .
  41. # Containers run nginx with global directives and daemon off
  42. ENTRYPOINT ["nginx", "-g", "daemon off;"]