feat: Optimizar Dockerfile con cachés para mejorar la construcción de imágenes
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
# Build stage for Rust LMS
|
# Build stage for Rust LMS
|
||||||
FROM rust:1-bookworm AS rust-builder
|
FROM rust:1-bookworm AS rust-builder
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
@@ -11,20 +13,24 @@ COPY shared/ ./shared/
|
|||||||
COPY services/ ./services/
|
COPY services/ ./services/
|
||||||
|
|
||||||
# Build the LMS service
|
# Build the LMS service
|
||||||
RUN cargo build --release -p lms-service
|
RUN --mount=type=cache,target=/usr/local/cargo/registry \
|
||||||
|
--mount=type=cache,target=/usr/local/cargo/git \
|
||||||
|
--mount=type=cache,target=/tmp/cargo-target \
|
||||||
|
CARGO_TARGET_DIR=/tmp/cargo-target cargo build --release -p lms-service && \
|
||||||
|
cp /tmp/cargo-target/release/lms-service /usr/src/app/lms-service
|
||||||
|
|
||||||
# Build stage for Next.js Experience
|
# Build stage for Next.js Experience
|
||||||
FROM node:20-alpine AS node-builder
|
FROM node:20-alpine AS node-builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY web/experience/package*.json ./
|
COPY web/experience/package*.json ./
|
||||||
RUN npm ci
|
RUN --mount=type=cache,target=/root/.npm npm ci
|
||||||
COPY web/experience/ .
|
COPY web/experience/ .
|
||||||
ARG NEXT_PUBLIC_LMS_API_URL
|
ARG NEXT_PUBLIC_LMS_API_URL
|
||||||
ENV NEXT_PUBLIC_LMS_API_URL=$NEXT_PUBLIC_LMS_API_URL
|
ENV NEXT_PUBLIC_LMS_API_URL=$NEXT_PUBLIC_LMS_API_URL
|
||||||
ARG NEXT_PUBLIC_CMS_API_URL
|
ARG NEXT_PUBLIC_CMS_API_URL
|
||||||
ENV NEXT_PUBLIC_CMS_API_URL=$NEXT_PUBLIC_CMS_API_URL
|
ENV NEXT_PUBLIC_CMS_API_URL=$NEXT_PUBLIC_CMS_API_URL
|
||||||
RUN npm run build
|
RUN --mount=type=cache,target=/root/.npm npm run build
|
||||||
|
|
||||||
# Final stage
|
# Final stage
|
||||||
FROM node:20-slim AS runner
|
FROM node:20-slim AS runner
|
||||||
@@ -35,10 +41,10 @@ ENV NODE_ENV production
|
|||||||
RUN apt-get update && apt-get install -y openssl ca-certificates && rm -rf /var/lib/apt/lists/*
|
RUN apt-get update && apt-get install -y openssl ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install sharp for Next.js image optimization
|
# Install sharp for Next.js image optimization
|
||||||
RUN npm install sharp
|
RUN --mount=type=cache,target=/root/.npm npm install sharp
|
||||||
|
|
||||||
# Copy LMS binary
|
# Copy LMS binary
|
||||||
COPY --from=rust-builder /usr/src/app/target/release/lms-service ./
|
COPY --from=rust-builder /usr/src/app/lms-service ./
|
||||||
|
|
||||||
# Copy Experience frontend
|
# Copy Experience frontend
|
||||||
COPY --from=node-builder /app/public ./public
|
COPY --from=node-builder /app/public ./public
|
||||||
|
|||||||
Reference in New Issue
Block a user