Cleanup docker builds (#829)
* Making docker builds smaller. Fixes #828 * Running sortpack
This commit is contained in:
parent
309c93e918
commit
4983cb82b5
2 changed files with 36 additions and 26 deletions
16
Dockerfile
16
Dockerfile
|
@ -1,11 +1,12 @@
|
|||
FROM node:alpine as builder
|
||||
RUN apk update && apk add yarn python3 build-base gcc wget git --no-cache
|
||||
RUN apk update && apk add curl yarn python3 build-base gcc wget git --no-cache
|
||||
RUN curl -sf https://gobinaries.com/tj/node-prune | sh
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Cache deps
|
||||
COPY package.json yarn.lock ./
|
||||
RUN yarn install --pure-lockfile
|
||||
RUN yarn install --production --ignore-scripts --prefer-offline --pure-lockfile
|
||||
|
||||
# Build
|
||||
COPY generate_translations.js \
|
||||
|
@ -21,9 +22,18 @@ COPY .git .git
|
|||
# Set UI version
|
||||
RUN echo "export const VERSION = '$(git describe --tag)';" > "src/shared/version.ts"
|
||||
|
||||
RUN yarn
|
||||
RUN yarn install --production --ignore-scripts --prefer-offline
|
||||
RUN yarn build:prod
|
||||
|
||||
# Prune the image
|
||||
RUN node-prune /usr/src/app/node_modules
|
||||
|
||||
RUN rm -rf ./node_modules/import-sort-parser-typescript
|
||||
RUN rm -rf ./node_modules/typescript
|
||||
RUN rm -rf ./node_modules/npm
|
||||
|
||||
RUN du -sh ./node_modules/* | sort -nr | grep '\dM.*'
|
||||
|
||||
FROM node:alpine as runner
|
||||
COPY --from=builder /usr/src/app/dist /app/dist
|
||||
COPY --from=builder /usr/src/app/node_modules /app/node_modules
|
||||
|
|
46
package.json
46
package.json
|
@ -17,11 +17,24 @@
|
|||
},
|
||||
"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",
|
||||
|
@ -34,70 +47,57 @@
|
|||
"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"
|
||||
|
|
Loading…
Reference in a new issue