From 19d84748c08bfdd0d7abd17f538896c7ca906ced Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 31 Mar 2020 12:31:01 +0530 Subject: [PATCH 1/4] update node to latest versions --- package-lock.json | 153 ++++++++++++++++++++++++++++++++++++++++------ package.json | 4 +- 2 files changed, 137 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0373f2d6..9b7b2bd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3723,7 +3723,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" @@ -5263,8 +5262,7 @@ "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" }, "content-disposition": { "version": "0.5.3", @@ -6682,7 +6680,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", - "dev": true, "requires": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -6692,7 +6689,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -6700,8 +6696,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -6721,7 +6716,6 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "dev": true, "requires": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -6731,7 +6725,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -6740,7 +6733,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "^2.0.0" } @@ -6749,7 +6741,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6758,14 +6749,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, "requires": { "p-try": "^1.0.0" } @@ -6774,7 +6763,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -6782,14 +6770,12 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, "requires": { "find-up": "^2.1.0" } @@ -13841,6 +13827,7 @@ "eslint-config-react-app": "^5.2.1", "eslint-loader": "3.0.3", "eslint-plugin-flowtype": "4.6.0", + "eslint-plugin-import": "2.20.1", "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-react": "7.19.0", "eslint-plugin-react-hooks": "^1.6.1", @@ -13877,10 +13864,140 @@ "workbox-webpack-plugin": "4.3.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + } + }, "eslint-plugin-react-hooks": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } } } }, diff --git a/package.json b/package.json index 7bc45d95..8b621a43 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "private": true, "engines": { - "node": "13.11", - "npm": "6.14" + "node": "13.12.0", + "npm": "6.14.4" }, "dependencies": { "@fullhuman/postcss-purgecss": "^2.1.0", From 2e624e6f6fbf91403df535e4c98de84ba9d66f22 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 31 Mar 2020 13:58:14 +0530 Subject: [PATCH 2/4] update app with docker files --- .dockerignore | 1 + Dockerfile | 21 +++++++++++++++++++++ docker-compose.yml | 15 +++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..c4d7d4a1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +## base image +FROM node:13.12.0-buster-slim + +## set working directory +WORKDIR /usr/src/app + +## add `/usr/src/app/node_modules/.bin` to $PATH +ENV PATH /usr/src/app/node_modules/.bin:$PATH + +## install and cache app dependencies +COPY package.json /usr/src/app/package.json + +## create user "node" and give permissions +RUN chown -R node:node . && chmod -R 755 . +USER node + +# install app dependencies +RUN npm install + +## start app +CMD ["npm", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..9f73ccfd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + reactive-resume: + container_name: reactive-resume + build: + context: . + dockerfile: Dockerfile + volumes: + - '.:/usr/src/app' + - '/usr/src/app/node_modules' + ports: + - '3001:3000' + environment: + - NODE_ENV=development From f07a9610758b0085a7555782f69955bbddcbd730 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 31 Mar 2020 14:50:25 +0530 Subject: [PATCH 3/4] create development docker image --- Dockerfile => Dockerfile-dev | 6 +----- docker-compose.yml => docker-compose-dev.yml | 4 ++++ 2 files changed, 5 insertions(+), 5 deletions(-) rename Dockerfile => Dockerfile-dev (74%) rename docker-compose.yml => docker-compose-dev.yml (79%) diff --git a/Dockerfile b/Dockerfile-dev similarity index 74% rename from Dockerfile rename to Dockerfile-dev index c4d7d4a1..9658f7d5 100644 --- a/Dockerfile +++ b/Dockerfile-dev @@ -10,12 +10,8 @@ ENV PATH /usr/src/app/node_modules/.bin:$PATH ## install and cache app dependencies COPY package.json /usr/src/app/package.json -## create user "node" and give permissions -RUN chown -R node:node . && chmod -R 755 . -USER node - # install app dependencies -RUN npm install +RUN npm install --silent ## start app CMD ["npm", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose-dev.yml similarity index 79% rename from docker-compose.yml rename to docker-compose-dev.yml index 9f73ccfd..2ee69010 100644 --- a/docker-compose.yml +++ b/docker-compose-dev.yml @@ -3,13 +3,17 @@ version: '3.7' services: reactive-resume: container_name: reactive-resume + tty: true build: context: . dockerfile: Dockerfile volumes: - '.:/usr/src/app' - '/usr/src/app/node_modules' + expose: + - '3001' ports: - '3001:3000' environment: - NODE_ENV=development + - CHOKIDAR_USEPOLLING=true From da19526e6ebae7f0c97928b322fed55f0423bffc Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 31 Mar 2020 14:56:40 +0530 Subject: [PATCH 4/4] create production docker image --- Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ Dockerfile-dev | 2 +- docker-compose-dev.yml | 2 +- docker-compose.yml | 12 ++++++++++++ nginx/nginx.conf | 17 +++++++++++++++++ 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 nginx/nginx.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..cde02647 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +## build image +FROM node:13.12.0-buster-slim as build + +## set working directory +WORKDIR /usr/src/app + +## add `/usr/src/app/node_modules/.bin` to $PATH +ENV PATH /usr/src/app/node_modules/.bin:$PATH + +## install and cache app dependencies +COPY package.json /usr/src/app/package.json + +## install app dependencies +RUN npm install --silent + +## copy files +COPY . /usr/src/app + +## build production app +RUN npm run build + +## production environment +FROM nginx:1.17.9-alpine + +## copy build artifacts to nginx +COPY --from=build /usr/src/app/build /usr/share/nginx/html + +## copy custom nginx config +RUN rm /etc/nginx/conf.d/default.conf +COPY nginx/nginx.conf /etc/nginx/conf.d + +## export port 80 +EXPOSE 80 + +## run nginx server +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/Dockerfile-dev b/Dockerfile-dev index 9658f7d5..ffac8c3e 100644 --- a/Dockerfile-dev +++ b/Dockerfile-dev @@ -10,7 +10,7 @@ ENV PATH /usr/src/app/node_modules/.bin:$PATH ## install and cache app dependencies COPY package.json /usr/src/app/package.json -# install app dependencies +## install app dependencies RUN npm install --silent ## start app diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 2ee69010..e0e71435 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -6,7 +6,7 @@ services: tty: true build: context: . - dockerfile: Dockerfile + dockerfile: Dockerfile-dev volumes: - '.:/usr/src/app' - '/usr/src/app/node_modules' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..94ae2268 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.7' + +services: + reactive-resume: + container_name: reactive-resume + build: + context: . + dockerfile: Dockerfile + expose: + - '80' + ports: + - '80:80' diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 00000000..758a646e --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,17 @@ +server { + + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + error_page 500 502 503 504 /50x.html; + + location = /50x.html { + root /usr/share/nginx/html; + } + +} \ No newline at end of file