37 lines
1.2 KiB
Docker
37 lines
1.2 KiB
Docker
# 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"]
|