# Development stage для front_minimal (отдельный от front_material) FROM node:20-alpine AS development WORKDIR /app # front_minimal использует NEXT_PUBLIC_SERVER_URL, NEXT_PUBLIC_ASSET_URL ARG NEXT_PUBLIC_SERVER_URL ARG NEXT_PUBLIC_ASSET_URL ARG NEXT_PUBLIC_BASE_PATH ARG BUILD_STATIC_EXPORT=false ENV NEXT_PUBLIC_SERVER_URL=${NEXT_PUBLIC_SERVER_URL} ENV NEXT_PUBLIC_ASSET_URL=${NEXT_PUBLIC_ASSET_URL} ENV NEXT_PUBLIC_BASE_PATH=${NEXT_PUBLIC_BASE_PATH:-} ENV BUILD_STATIC_EXPORT=${BUILD_STATIC_EXPORT} ENV NODE_ENV=development ENV HOSTNAME=0.0.0.0 ENV WATCHPACK_POLLING=true ENV CHOKIDAR_USEPOLLING=true # front_minimal: есть и package-lock.json и yarn.lock, используем npm COPY package*.json ./ RUN npm install COPY . . # Entrypoint: при volume-монтировании проверяем node_modules RUN echo '#!/bin/sh' > /entrypoint.sh && \ echo 'set -e' >> /entrypoint.sh && \ echo 'if [ ! -d node_modules/next ] 2>/dev/null || [ ! -f node_modules/.package-lock.json ] 2>/dev/null; then npm install; fi' >> /entrypoint.sh && \ echo 'exec npx next dev -p 3000 --hostname 0.0.0.0' >> /entrypoint.sh && \ chmod +x /entrypoint.sh EXPOSE 3000 ENTRYPOINT ["/entrypoint.sh"]