]> Untitled Git - lemmy-ui.git/commitdiff
Cleanup docker builds (#829)
authorDessalines <dessalines@users.noreply.github.com>
Fri, 21 Oct 2022 19:28:18 +0000 (15:28 -0400)
committerGitHub <noreply@github.com>
Fri, 21 Oct 2022 19:28:18 +0000 (15:28 -0400)
* Making docker builds smaller. Fixes #828

* Running sortpack

Dockerfile
package.json

index a7f323b898358934e81790074f9e4a6f6f965383..edf94cff0e03e353ff45313788988ae0aef2de56 100644 (file)
@@ -1,11 +1,12 @@
 FROM node:alpine as builder\r
-RUN apk update && apk add yarn python3 build-base gcc wget git --no-cache\r
+RUN apk update && apk add curl yarn python3 build-base gcc wget git --no-cache\r
+RUN curl -sf https://gobinaries.com/tj/node-prune | sh\r
 \r
 WORKDIR /usr/src/app\r
 \r
 # Cache deps\r
 COPY package.json yarn.lock ./\r
-RUN yarn install --pure-lockfile\r
+RUN yarn install --production --ignore-scripts --prefer-offline --pure-lockfile\r
 \r
 # Build\r
 COPY generate_translations.js \\r
@@ -21,9 +22,18 @@ COPY .git .git
 # Set UI version \r
 RUN echo "export const VERSION = '$(git describe --tag)';" > "src/shared/version.ts"\r
 \r
-RUN yarn\r
+RUN yarn install --production --ignore-scripts --prefer-offline\r
 RUN yarn build:prod\r
 \r
+# Prune the image\r
+RUN node-prune /usr/src/app/node_modules\r
+\r
+RUN rm -rf ./node_modules/import-sort-parser-typescript\r
+RUN rm -rf ./node_modules/typescript\r
+RUN rm -rf ./node_modules/npm\r
+\r
+RUN du -sh ./node_modules/* | sort -nr | grep '\dM.*'\r
+\r
 FROM node:alpine as runner\r
 COPY --from=builder /usr/src/app/dist /app/dist\r
 COPY --from=builder /usr/src/app/node_modules /app/node_modules\r
index e7c0b50945f9de8608b38ac51842ddf9823d4cf0..5e9e7b3ec3e2a6390e5b5bea2f90b958aa063303 100644 (file)
   },
   "repository": "https://github.com/LemmyNet/lemmy-ui",
   "dependencies": {
+    "@babel/plugin-proposal-decorators": "^7.18.9",
+    "@babel/plugin-transform-runtime": "^7.18.9",
+    "@babel/plugin-transform-typescript": "^7.18.8",
+    "@babel/preset-env": "7.19.3",
+    "@babel/preset-typescript": "^7.18.6",
+    "@babel/runtime": "^7.18.9",
+    "@sniptt/monads": "^0.5.10",
     "@typescript-eslint/parser": "^5.31.0",
     "autosize": "^5.0.1",
+    "babel-loader": "^8.2.5",
+    "babel-plugin-inferno": "^6.5.0",
     "check-password-strength": "^2.0.7",
     "choices.js": "^10.1.0",
+    "class-transformer": "^0.5.1",
     "classnames": "^2.3.1",
+    "clean-webpack-plugin": "^4.0.0",
+    "copy-webpack-plugin": "^11.0.0",
+    "css-loader": "^6.7.1",
     "emoji-short-name": "^2.0.0",
     "express": "~4.18.1",
     "i18next": "^21.8.14",
     "inferno-server": "^8.0.3",
     "isomorphic-cookie": "^1.2.4",
     "jwt-decode": "^3.1.2",
+    "lemmy-js-client": "0.17.0-rc.46",
     "markdown-it": "^13.0.1",
     "markdown-it-container": "^3.0.0",
     "markdown-it-footnote": "^3.0.3",
     "markdown-it-html5-embed": "^1.0.0",
     "markdown-it-sub": "^1.0.0",
     "markdown-it-sup": "^1.0.0",
+    "mini-css-extract-plugin": "^2.6.1",
     "moment": "^2.29.4",
+    "node-fetch": "^2.6.1",
+    "reflect-metadata": "^0.1.13",
     "register-service-worker": "^1.7.2",
+    "run-node-webpack-plugin": "^1.3.0",
     "rxjs": "^7.5.6",
     "sass": "^1.54.0",
+    "sass-loader": "^13.0.2",
     "serialize-javascript": "^6.0.0",
     "tippy.js": "^6.3.7",
     "toastify-js": "^1.12.0",
     "tributejs": "^5.1.3",
+    "webpack": "5.74.0",
+    "webpack-cli": "^4.10.0",
+    "webpack-node-externals": "^3.0.0",
     "websocket-ts": "^1.1.1"
   },
   "devDependencies": {
     "@babel/core": "^7.18.9",
-    "@babel/plugin-proposal-decorators": "^7.18.9",
-    "@babel/plugin-transform-runtime": "^7.18.9",
-    "@babel/plugin-transform-typescript": "^7.18.8",
-    "@babel/preset-env": "7.19.3",
-    "@babel/preset-typescript": "^7.18.6",
-    "@babel/runtime": "^7.18.9",
-    "@sniptt/monads": "^0.5.10",
     "@types/autosize": "^4.0.0",
     "@types/express": "^4.17.13",
     "@types/node": "^18.6.2",
     "@types/node-fetch": "^2.6.2",
     "@types/serialize-javascript": "^5.0.1",
     "@typescript-eslint/eslint-plugin": "^5.31.0",
-    "babel-loader": "^8.2.5",
-    "babel-plugin-inferno": "^6.5.0",
     "bootstrap": "^5.2.0",
     "bootswatch": "^5.2.0",
-    "class-transformer": "^0.5.1",
-    "clean-webpack-plugin": "^4.0.0",
-    "copy-webpack-plugin": "^11.0.0",
-    "css-loader": "^6.7.1",
     "eslint": "^8.20.0",
     "eslint-plugin-inferno": "^7.31.8",
     "eslint-plugin-prettier": "^4.2.1",
     "husky": "^8.0.1",
     "import-sort-style-module": "^6.0.0",
-    "lemmy-js-client": "0.17.0-rc.46",
     "lint-staged": "^13.0.3",
-    "mini-css-extract-plugin": "^2.6.1",
-    "node-fetch": "^2.6.1",
     "prettier": "^2.7.1",
     "prettier-plugin-import-sort": "^0.0.7",
     "prettier-plugin-organize-imports": "^3.0.0",
     "prettier-plugin-packagejson": "^2.2.18",
-    "reflect-metadata": "^0.1.13",
     "rimraf": "^3.0.2",
-    "run-node-webpack-plugin": "^1.3.0",
-    "sass-loader": "^13.0.2",
     "sortpack": "^2.3.0",
     "style-loader": "^3.3.1",
     "terser": "^5.14.2",
     "typescript": "^4.8.4",
-    "webpack": "5.74.0",
-    "webpack-cli": "^4.10.0",
-    "webpack-dev-server": "4.11.1",
-    "webpack-node-externals": "^3.0.0"
+    "webpack-dev-server": "4.11.1"
   },
   "engines": {
     "node": ">=8.9.0"