diff --git a/Dockerfile b/Dockerfile index 0a0d2c9..a500626 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,41 @@ -FROM ubuntu:jammy +ARG DEVELOPMENT= + +FROM ubuntu:jammy AS base RUN apt-get update \ && DEBIAN_FRONTEND=NONINTERACTIVE apt-get upgrade -y RUN DEBIAN_FRONTEND=NONINTERACTIVE apt-get install -y \ - wget \ + wget + +# Upgrade Node +RUN wget -qO- https://deb.nodesource.com/setup_18.x | bash - + +# Install the latest npm and npx +RUN npm install --global npm@latest + +FROM base AS production + +WORKDIR /website +COPY /*.html /*.js /*.json /website/ +RUN npm install && npm run build + +WORKDIR /website/client +RUN mv ../node_modules . +COPY /client/*.js /client/*.json /client/public /client/src /website/client/ +RUN npm install && npm run build + +FROM production AS runtime1 +ONBUILD COPY --from=production /website/dist /website/dist +ONBUILD COPY --from=production /website/*.html /website/ +ONBUILD COPY --from=production /website/client/*.html /website/client/ +ONBUILD COPY --from=production /website/client/dist/ /website/client/dist/ + +FROM base AS runtime + +FROM runtime${DEVELOPMENT} + +RUN DEBIAN_FRONTEND=NONINTERACTIVE apt-get install -y \ pip \ libgl1 \ libglib2.0-0 \ @@ -12,12 +43,7 @@ RUN DEBIAN_FRONTEND=NONINTERACTIVE apt-get install -y \ rsync \ less \ git \ - sqlite3 - -# Upgrade Node -RUN wget -qO- https://deb.nodesource.com/setup_18.x | bash - - -RUN DEBIAN_FRONTEND=NONINTERACTIVE apt-get install -y \ + sqlite3 \ python2 \ jhead \ nodejs \ @@ -28,9 +54,6 @@ RUN DEBIAN_FRONTEND=NONINTERACTIVE apt-get install -y \ curl \ less -# Install the latest npm and npx -RUN npm install --global npm@latest - # Install deepface RUN pip install deepface RUN pip install piexif @@ -39,31 +62,16 @@ RUN pip install piexif # install <1.24 RUN pip install "numpy<1.24" -COPY /package*json /website/ - -WORKDIR /website -RUN npm upgrade && npm install - -WORKDIR /website/client -COPY /client/package*json /website/client/ -RUN npm upgrade && npm install COPY /server /website/server - WORKDIR /website/server -RUN npm upgrade && npm install +RUN npm install COPY /config/default.json /website/config/default.json -COPY /*js /website/ -COPY /src /website/src -COPY /client /website/client -COPY /scanner /website/scanner -COPY /frontend /website/frontend COPY /ketrface /website/ketrface # Switch to bash instead of sh SHELL [ "/bin/bash", "-c" ] -ARG DEVELOPMENT= RUN cp /website/server/nginx.conf /etc/nginx/sites-enabled/default # If not DEVELOPMENT mode, copy production config, else development