dockerfile

This commit is contained in:
Jonas 12t 2021-06-01 18:44:38 +04:00
parent 3612481dca
commit b58d36d5af
1 changed files with 97 additions and 0 deletions

97
dockerfile Normal file
View File

@ -0,0 +1,97 @@
# = Do.Doc Docker =
# ==================================================== #
# == Base for build ==
# ==================================================== #
FROM node:12.18.3 AS build-base
RUN apt-get update && apt-get install -y python2.7 git ca-certificates wget file fftw-dev sudo && \
update-ca-certificates
#RUN apk --update --no-cache add python2 build-base git ca-certificates wget file fftw-dev sudo && \
# update-ca-certificates
# Install global dependencies
RUN npm i extract-zip
RUN sudo npm install -g node-gyp --unsafe-perm=true --allow-root --save-dev --save-exact
RUN npm i ajv
# Ready to start do.doc specific dependencies
# ==================================================== #
# == server ==
# ==================================================== #
FROM build-base AS build-server
# node-canvas missing for alpine, must compile from source
# https://github.com/Automattic/node-canvas/issues/1486
#RUN apk add --update --no-cache \
# make \
# g++ \
# jpeg-dev \
# cairo-dev \
# giflib-dev \
# pango-dev \
# && npm i canvas --build-from-source
# Install server dependencies
WORKDIR /src/l-atelier-des-chercheurs/dodoc
COPY package*.json ./
RUN npm install --unsafe-perm=true
COPY . /src/l-atelier-des-chercheurs/dodoc/
#RUN npm build --unsafe-perm=true
# ==================================================== #
# == Client ==
# ==================================================== #
FROM build-base AS build-client
# Install client dependencies
WORKDIR /src/l-atelier-des-chercheurs/dodoc/public/
COPY public/package*.json ./
RUN npm install --unsafe-perm=true
COPY public /src/l-atelier-des-chercheurs/dodoc/public
#RUN npm run dev --unsafe-perm=true && npm run build --unsafe-perm=true
RUN npm run build --unsafe-perm=true
# ==================================================== #
# == Serving ==
# ==================================================== #
FROM node:12.18.3
RUN apt-get update && apt-get install -y curl libx11-xcb1 libxcomposite1 libxi6 libxext6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libpangocairo-1.0-0 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0
# RUN apk add --update --no-cache curl libx11 libxcomposite libxi libxext libxtst nss cups-libs libxscrnsaver libxrandr alsa-lib pango atk at-spi2-atk gtk+3.0
# RUN apk add --update --no-cache giflib-dev
# RUN apk update && apk upgrade
# RUN apk add --update --no-cache harfbuzz freetype ttf-freefont
# RUN apk add --update --no-cache chromium
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# RUN yarn add puppeteer
# Add user so we don't need --no-sandbox.
# RUN addgroup -S node && adduser -S -g node node \
RUN mkdir -p /home/node/Downloads \
&& chown -R node:node /home/node
# && chown -R node:node /application
EXPOSE 8080
WORKDIR /src/l-atelier-des-chercheurs/dodoc
COPY . .
COPY --from=build-server /src/l-atelier-des-chercheurs/dodoc/node_modules node_modules
COPY --from=build-client /src/l-atelier-des-chercheurs/dodoc/public/dist/ /src/l-atelier-des-chercheurs/dodoc/public/dist/
COPY --from=build-base /usr/local/lib/node_modules /usr/local/lib/node_modules
HEALTHCHECK --interval=5s \
--timeout=5s \
--retries=6 \
CMD curl -fs http://localhost:8080/ || exit 1
USER node
CMD npm run debug