diff --git a/Dockerfile b/Dockerfile index 5aa995b5..f6fd3aba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,7 @@ +# global variable declaration: +# -Build to serve under Subdirectory BASE_URL if provided, eg: "ARG BASE_URL=/pdf/", otherwise leave blank: "ARG BASE_URL=" +ARG BASE_URL= + # Build stage FROM node:20-alpine AS builder WORKDIR /app @@ -6,24 +10,29 @@ RUN npm ci COPY . . # Build without type checking (vite build only) -# Pass SIMPLE_MODE and BASE_URL environment variables if provided -ARG SIMPLE_MODE=false -ARG BASE_URL=/ +# Pass SIMPLE_MODE environment variable if provided +ARG SIMPLE_MODE=true ENV SIMPLE_MODE=$SIMPLE_MODE + +# global arg to local arg +ARG BASE_URL ENV BASE_URL=$BASE_URL -RUN npm run build -- --mode production + +RUN if [ -z "$BASE_URL" ]; then \ + npm run build -- --mode production; \ + else \ + npm run build -- --base=${BASE_URL} --mode production; \ + fi # Production stage FROM nginxinc/nginx-unprivileged:stable-alpine-slim LABEL org.opencontainers.image.source="https://github.com/alam00000/bentopdf" -ARG BASE_URL=/ -ENV BASE_URL=$BASE_URL - -# Switch to root to create directories and copy files (dont worry guys, its not a security issue as we switch it only for the duration of the build and its needed to create the destination directory based on BASE_URL) -USER root +# global arg to local arg +ARG BASE_URL +COPY --chown=nginx:nginx --from=builder /app/dist /usr/share/nginx/html${BASE_URL%/} COPY --chown=nginx:nginx nginx.conf /etc/nginx/nginx.conf RUN set -e; \ @@ -60,6 +69,7 @@ EXPOSE 8080 CMD ["nginx", "-g", "daemon off;"] + # Old Dockerfile for Root User # # Build stage # FROM node:20-alpine AS builder