hackaru-app/hackaru-api

View on GitHub
Dockerfile

Summary

Maintainability
Test Coverage
FROM ruby:3.0.3-alpine3.13 as bundler
ENV API_DIR /hackaru
WORKDIR $API_DIR
RUN apk -U upgrade \
 && apk add --update --no-cache -t build-dependencies \
    build-base \
    postgresql-dev \
    mariadb-dev
COPY Gemfile Gemfile.lock $API_DIR/
RUN bundle install -j4

FROM node:18.9.0-alpine as node
ENV API_DIR /hackaru
WORKDIR $API_DIR
COPY package.json \
  yarn.lock \
  webpack.common.js \
  webpack.prod.js \
  $API_DIR/
COPY /app/assets $API_DIR/app/assets
RUN yarn && yarn build

FROM ruby:3.0.3-alpine3.13
ENV API_DIR /hackaru
WORKDIR $API_DIR
RUN apk -U upgrade \
 && apk add --update --no-cache \
    tzdata \
    postgresql-client \
    mariadb-connector-c-dev \
    chromium \
    nss \
    freetype \
    freetype-dev \
    harfbuzz \
    ca-certificates \
    less \
    yarn
COPY --from=node \
    /usr/local/bin/node \
    /usr/local/bin/node
COPY --from=bundler \
    /usr/local/bundle \
    /usr/local/bundle
COPY --from=node \
    $API_DIR/node_modules \
    $API_DIR/node_modules
COPY --from=node \
    $API_DIR/public/packs \
    $API_DIR/public/packs
RUN addgroup hackaru \
 && adduser -s /bin/sh -D -G hackaru hackaru \
 && chown hackaru:hackaru $API_DIR
COPY --chown=hackaru:hackaru . $API_DIR
USER hackaru
CMD ["bin/rails", "s", "-b", "0.0.0.0"]