X-Git-Url: http://these/git/?a=blobdiff_plain;f=Dockerfile;h=92b3f7e62de6c3576b18a45b24d5db4f25047774;hb=8b478e971244321048818c95df00198cb445dba9;hp=0c40fb96d0583fee903b20be67b44f7916c47992;hpb=241ef722908a1abe02ff54985455bf3467d7797c;p=lemmy-ui.git diff --git a/Dockerfile b/Dockerfile index 0c40fb9..92b3f7e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,47 @@ -FROM node:14 -WORKDIR /usr/src/app_name -COPY . . -RUN yarn -RUN yarn build:server -RUN yarn build:client +FROM node:20.2-alpine as builder +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 + +ENV npm_config_target_arch=x64 +ENV npm_config_target_platform=linux +ENV npm_config_target_libc=musl + +# Cache deps +COPY package.json yarn.lock ./ +RUN yarn --production --prefer-offline --pure-lockfile + +# Build +COPY generate_translations.js \ + tsconfig.json \ + webpack.config.js \ + .babelrc \ + ./ + +COPY lemmy-translations lemmy-translations +COPY src src +COPY .git .git + +# Set UI version +RUN echo "export const VERSION = '$(git describe --tag)';" > "src/shared/version.ts" + +RUN yarn --production --prefer-offline +RUN NODE_OPTIONS="--max-old-space-size=8192" 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 + EXPOSE 1234 -CMD yarn serve +WORKDIR /app +CMD node dist/js/server.js