diff --git a/src/Managing.WebApp/Dockerfile-web-ui-dev b/src/Managing.WebApp/Dockerfile-web-ui-dev index dc7aab7..376b8b2 100644 --- a/src/Managing.WebApp/Dockerfile-web-ui-dev +++ b/src/Managing.WebApp/Dockerfile-web-ui-dev @@ -1,46 +1,50 @@ -ARG NODE_VERSION=18.20.0 -ARG ALPINE_VERSION=3.19.0 - -FROM node:${NODE_VERSION}-alpine AS node - -FROM alpine:${ALPINE_VERSION} AS builder - -COPY --from=node /usr/lib /usr/lib -COPY --from=node /usr/local/lib /usr/local/lib -COPY --from=node /usr/local/include /usr/local/include -COPY --from=node /usr/local/bin /usr/local/bin - -RUN node -v +# Set base image for the builder stage +ARG NODE_VERSION=18.17.0 +FROM --platform=linux/arm64/v8 node:${NODE_VERSION} AS builder # Set the working directory in the container WORKDIR /app -# Copy the package.json and package-lock.json first to leverage Docker's cache -COPY ./src/Managing.WebApp/package*.json ./ -RUN npm config set registry http://registry.cnpmjs.org -# Install dependencies -#RUN npm ci --production --loglevel=verbose -#RUN npm i --omit=dev --loglevel=verbose +# Install xsel if needed (uncomment if required in your environment) +# RUN apt-get update && apt-get install -y xsel -RUN npm i --max-old-space-size=12000 --loglevel=verbose +# Install Yarn +RUN npm install -g yarn -# Copy the application code +# Copy the package.json and possibly yarn.lock first to leverage Docker's cache +COPY package.json yarn.lock* ./ + +# Optionally, add a specific package ignoring engine check +RUN yarn add whatwg-fetch@3.6.2 --ignore-engines + +# Install all project dependencies with Yarn +RUN yarn install --network-timeout 1000000 --verbose + +# Clear Yarn cache to ensure no corrupted data interferes with installation +RUN yarn cache clean + +# Copy the rest of your application code COPY . . -# Build the Vite application -RUN npm run build +# Set necessary environment variables (if they are not secrets) +ENV NODE_ENV=development +ENV VITE_API_URL_LOCAL=https://localhost:5001 +ENV VITE_API_URL_SERVER=https://localhost + +# Build the application with increased memory options for Node +RUN node --max-old-space-size=4096 ./node_modules/.bin/vite build # Stage 2: Create the runtime image -FROM nginx:alpine +FROM --platform=linux/arm64/v8 nginx:alpine # Copy the built Vite application from the builder stage COPY --from=builder /app/dist /usr/share/nginx/html -# Copy a custom Nginx configuration file (if you need one) +# Copy a custom Nginx configuration file (if needed) # COPY nginx.conf /etc/nginx/nginx.conf -# Expose port 80 +# Expose port 80 for the Nginx server EXPOSE 80 -# Start the Nginx server +# Command to start the Nginx server CMD ["nginx", "-g", "daemon off;"]