# -- Base images # Pinned to specific versions, and updated by Renovate FROM node:8.11.3-alpine@sha256:d743b4141b02fcfb8beb68f92b4cd164f60ee457bf2d053f36785bf86de16b0d AS node FROM buildkite/puppeteer:1.1.1 AS puppeteer # -- Production environment FROM node AS production ENV NODE_ENV=production EXPOSE 3000 WORKDIR /app COPY package.json yarn.lock .yarnclean /app/ RUN apk --no-cache --virtual build-dependencies add python make g++ && \ yarn install --frozen-lockfile --silent && \ apk del build-dependencies COPY . /app RUN yarn run build CMD ["yarn", "run", "start"] # -- Development # We can just override NODE_ENV and re-run install to get the additional dev # deps. FROM production as development ENV NODE_ENV=development RUN yarn install # -- Test # Same deps as development FROM development as test # -- Integration tests # Has headless chrome and puppeteer, and adds in Mocha so we can run our tests # directly inside it FROM puppeteer AS integration-tests RUN npm i -g mocha@5 ENV PATH="${PATH}:/node_modules/.bin" # -- Default target FROM production