R

Railway

βœ‹ο½œhelp

Join Server

NixPacks are huge

IImLunaHey3/8/2023
Moved from #🎭|show-off-your-stuff
IImLunaHey3/8/2023
FROM node:18-alpine as builder

WORKDIR /app

# Install required packages
COPY package*.json /app/
RUN npm install

# Copy source files
COPY src /app/src
COPY tsconfig.json squirrelly.js /app/
COPY patches /app/patches
COPY prisma /app/prisma

# Generate Prisma Client
RUN npx prisma generate

# Build application
RUN npm run build

# ==== Final Image
FROM node:18-alpine as final
USER node:node
WORKDIR /app

# Copying build output
COPY --from=builder --chown=node:node /app/squirrelly.js ./
COPY --from=builder --chown=node:node /app/package*.json ./
COPY --from=builder --chown=node:node /app/prisma prisma
COPY --from=builder --chown=node:node /app/node_modules/.prisma node_modules/.prisma
COPY --from=builder --chown=node:node /app/dist dist

# Install only the production dependencies
RUN npm install --production

CMD npm start
IImLunaHey3/8/2023
My old build was 400MB it's now 100MB.
UUUnknown User3/8/2023
3 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
==============
Using Nixpacks
==============
context: 38896407f0d7d63901693309885bef41
 
╔══════════════ Nixpacks v1.4.2 ═════════════╗
β•‘ setup      β”‚ nodejs-18_x, npm-8_x, openssl β•‘
║────────────────────────────────────────────║
β•‘ install    β”‚ npm ci                        β•‘
║────────────────────────────────────────────║
β•‘ build      β”‚ npm run build                 β•‘
║────────────────────────────────────────────║
β•‘ start      β”‚ npm run start                 β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
IImLunaHey3/8/2023
That?
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
I was forcing v18 since I needed fetch.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
dont think so. Im using alpine and i didnt add ssl myself.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
nah you need to usually add it yourself.
IImLunaHey3/8/2023
all the images at work have alpine + openssl installed so i know it's for sure missing by default
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
the only unconventional thing im doing is using tsup to bundle all the deps inline, but that's no different to using esbuild, webpack, etc.
IImLunaHey3/8/2023
plus the savings just from using 2 images is huge, the second(final) only gets the production deps.
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
yeah, we also use this at work to easily remove things from node_modules like markdown files and such people forget to remove from the deps before publishing.

https://www.npmjs.com/package/node-prune
IImLunaHey3/8/2023
We saw 50% reduction in some of our node_modules from that alone.
IImLunaHey3/8/2023
if a prod app needs a dep to start it's a dep not a devDep, idk why people confuse those.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
my main point is it's not really an issue if people use them how they're meant to be used.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
true 😦
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
Jjackson3/8/2023
alpine has openssl v3 by default now, but yeah could install v1 compat
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
the more ya know.
Jjackson3/8/2023
would likely cause a TON of issues but could shrink image size a bit
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
Jjackson3/8/2023
switching package managers from apt to apk, different system dependencies, stuff like that
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
Jjackson3/8/2023
would likely cause some hidden issues in people's projects, stuff like "libmonkey.so.c not found"
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
Jjackson3/8/2023
ah
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
Jjackson3/8/2023
:wtfbowl:
UUUnknown User3/8/2023
3 Messages Not Public
Sign In & Join Server To View
Jjackson3/8/2023
well yeah if it's a bone stock js project then alpine 18 is probably the move
IImLunaHey3/8/2023
what about using debian slim?
Jjackson3/8/2023
that's what i use on several projects
Jjackson3/8/2023
could get neb's opinion
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
debian slim would be at least a move in the right direction. Plus add multi-step builds and that'd shave a lot of space.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
I mean.. you do but you dont take advantage of it though.

Looking at my logs it creates with the build step, then does everything in stage-0. Kinda defeating the whole purpose of multi-step.
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
#1 [internal] load build definition from Dockerfile
#1 sha256:ea2e532503e902eb9b4c6ecdb02da98a3c4960e97586847a9260ed07e9b61489
 
#1 transferring dockerfile: 2.23kB done
#1 DONE 0.0s
 
#2 [internal] load .dockerignore
#2 sha256:c380b620781affc5f699a98d101c2adc247f7f07baa5ddc7c7c755cbe850391d
#2 transferring context: 2B done
#2 DONE 0.0s
 
#3 [internal] load metadata for ghcr.io/railwayapp/nixpacks:ubuntu-1677542600
#3 sha256:35ba3c4c9c27e2c10ffc5e2ba3111bff1e2ed2b0ed00afdfc6e6aea781c437e3
 
#3 DONE 16.9s
 
IImLunaHey3/8/2023
That's build step.
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
and then after that stage-0
IImLunaHey3/8/2023
nothing after stage-0
IImLunaHey3/8/2023
#4 [stage-0  1/10]
#13 [stage-0  9/10]
Bbrody3/8/2023
I too have noticed this, I thought I was just tripping though
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View
IImLunaHey3/8/2023
so maybe you dont need to change anything but just fix this lol
Bbrody3/8/2023
Fair
UUUnknown User3/8/2023
Message Not Public
Sign In & Join Server To View
Bbrody3/8/2023
I think railway likes shipping 400mb images
UUUnknown User3/8/2023
12 Messages Not Public
Sign In & Join Server To View
Bbrody3/8/2023
Oh yeah I know, I'm just joking around
UUUnknown User3/8/2023
2 Messages Not Public
Sign In & Join Server To View