59 lines
1.3 KiB
Docker
59 lines
1.3 KiB
Docker
FROM ruby:3.1.2-alpine
|
|
|
|
# App variables
|
|
ENV APP_PATH /progress-test/
|
|
ENV APP_USER progress-test
|
|
ENV APP_USER_HOME /home/progress-test
|
|
# Bundler variables
|
|
ENV BUNDLE_PATH $APP_USER_HOME
|
|
ENV GEM_HOME $APP_USER_HOME/bundle
|
|
ENV BUNDLE_BIN $GEM_HOME/bin
|
|
# Rails variables
|
|
ENV RAILS_LOG_TO_STDOUT=true
|
|
# System variables
|
|
ENV PATH $PATH:$BUNDLE_BIN
|
|
# Timezone
|
|
ENV TZ=America/Sao_Paulo
|
|
|
|
# Puma
|
|
EXPOSE 3000
|
|
|
|
# UID of the user that will be created
|
|
ARG UID
|
|
|
|
# Validating if UID argument was provided
|
|
RUN : "${UID:?You must provide a UID argument when building this image.}"
|
|
|
|
# Creating an user so we don't run everything as root
|
|
RUN adduser -h $APP_USER_HOME -D -u $UID $APP_USER
|
|
|
|
# cd to $APP_PATH
|
|
WORKDIR $APP_PATH
|
|
|
|
COPY Gemfile* package.json yarn.lock $APP_PATH
|
|
|
|
# Installing libraries and gems
|
|
# The package shared-mime-info is required in a Rails dependency
|
|
# shared-mime-info ref: https://vtex.slack.com/archives/CE16Q9XRT/p1616716948056900
|
|
RUN apk update && \
|
|
apk add --no-cache \
|
|
git \
|
|
build-base \
|
|
postgresql-dev \
|
|
tzdata \
|
|
nodejs \
|
|
yarn \
|
|
less \
|
|
graphviz \
|
|
shared-mime-info && \
|
|
bundle config jobs $(nproc --all) && \
|
|
bundle install && \
|
|
yarn && \
|
|
chown -R $APP_USER:$APP_USER $APP_USER_HOME && \
|
|
chown -R $APP_USER:$APP_USER $APP_PATH && \
|
|
rm -r /var/cache/apk/*
|
|
|
|
COPY --chown=progress-test . $APP_PATH
|
|
|
|
USER $APP_USER
|