From 8b8f470f5229aec7e5d3777ec45d8293ce527595 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Tue, 25 Feb 2025 16:00:37 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=82=20IDK=20anymore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index f4ba138..4233779 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,17 @@ -# Stage 1: Build Stage (Builder) -FROM node:21-alpine3.18 AS builder +# Use a non-ARM image (x86_64) for Node.js +FROM --platform=linux/amd64 node:21-alpine3.18 AS builder -# Set environment variables for build +# Set metadata for contact +LABEL maintainer="Rishi Ghan " + +# Set environment variables ENV NPM_CONFIG_LOGLEVEL=warn ENV NODE_ENV=production # Set the working directory WORKDIR /core-services -# Install build dependencies using apk +# Install required dependencies using apk RUN apk update && apk add --no-cache \ bash \ wget \ @@ -43,7 +46,10 @@ RUN wget https://www.rarlab.com/rar/rarlinux-x64-621.tar.gz \ && cp rar/unrar /usr/bin/ \ && rm -rf rarlinux-x64-621.tar.gz rar -# Copy application configuration files to build environment +# Verify Node.js installation +RUN node -v && npm -v + +# Copy application configuration files COPY package.json package-lock.json ./ COPY moleculer.config.ts ./ COPY tsconfig.json ./ @@ -51,25 +57,31 @@ COPY tsconfig.json ./ # Install application dependencies RUN npm install -# Install sharp with platform-specific binaries -RUN npm install sharp --build-from-source +# Install sharp with proper platform configuration +RUN npm install --force sharp --platform=linux/amd64 # Install global dependencies RUN npm install -g typescript ts-node -# Stage 2: Final Stage (Run Environment) -FROM node:21-alpine3.18 AS runtime +# Copy the rest of the application files (e.g., source code) +COPY . . -# Set environment variables for runtime +# Build the app +RUN npm run build + +# Final image +FROM --platform=linux/amd64 node:21-alpine3.18 + +# Set environment variables ENV NODE_ENV=production -ENV NPM_CONFIG_LOGLEVEL=warn # Set the working directory WORKDIR /core-services -# Install runtime dependencies using apk (keep only what is needed to run the app) +# Install runtime dependencies RUN apk update && apk add --no-cache \ bash \ + wget \ imagemagick \ python3 \ xvfb \ @@ -82,11 +94,11 @@ RUN apk update && apk add --no-cache \ icu-dev \ pkgconfig -# Copy only necessary files from the builder stage +# Copy necessary files from the builder image COPY --from=builder /core-services /core-services # Expose the application's port EXPOSE 3000 -# Command to run the application +# Command to run the application (this will now work) CMD ["npm", "start"]