Files
bodyshop-media-server/Dockerfile
2025-07-23 17:59:13 -07:00

41 lines
1.1 KiB
Docker

### ALPINE MULTI-STAGE
# Build stage for libraries
FROM node:22-alpine AS builder
# Install build dependencies
RUN apk add --no-cache bash wget
# Node.js application build stage
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install -g typescript
RUN npm install
COPY . .
RUN npm run build
# Final stage
FROM node:22-alpine
# Enable community repository for additional packages
RUN echo "https://dl-cdn.alpinelinux.org/alpine/v$(grep -oE '[0-9]+\.[0-9]+' /etc/alpine-release)/community" >> /etc/apk/repositories
RUN apk update
# Install runtime dependencies only
RUN apk add --no-cache bash redis ghostscript graphicsmagick imagemagick libjpeg-turbo libpng libwebp tiff libheif libde265 x265 ffmpeg
RUN npm install -g pm2
WORKDIR /usr/src/app
# Copy built application from builder
COPY --from=builder /usr/src/app/dist ./dist
COPY ./assets /assets
COPY --from=builder /usr/src/app/node_modules ./node_modules
COPY --from=builder /usr/src/app/.env.production ./.env.production
COPY --from=builder /usr/src/app/ecosystem.config.cjs ./ecosystem.config.cjs
EXPOSE 8000
CMD ["sh", "-c", "redis-server --daemonize yes && pm2-runtime ecosystem.config.cjs"]