|
ARG DEBIAN_VERSION=buster
|
|
ARG RUBY_VERSION=3.0-rc
|
|
#2.7
|
|
#3.0-rc
|
|
|
|
FROM ruby:$RUBY_VERSION-slim-${DEBIAN_VERSION} AS development
|
|
|
|
ARG PG_MAJOR=13
|
|
ARG NODE_MAJOR=14
|
|
ARG BUNDLER_VERSION=2.1.4
|
|
ARG YARN_VERSION=1.22.5
|
|
ARG APP_PATH=/exclusive
|
|
|
|
ENV LANG=C.UTF-8 \
|
|
BUNDLE_JOBS=4 \
|
|
BUNDLE_RETRY=3 \
|
|
APP_PATH=/exclusive \
|
|
RAILS_ENV=development
|
|
|
|
# Build requirements
|
|
RUN apt-get update -qq \
|
|
&& apt-get install -yq --no-install-recommends \
|
|
build-essential \
|
|
gnupg2 \
|
|
curl \
|
|
less \
|
|
git
|
|
|
|
RUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
|
|
&& echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' ${PG_MAJOR} > /etc/apt/sources.list.d/pgdg.list
|
|
|
|
RUN curl -sL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash -
|
|
|
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
|
&& echo 'deb http://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list
|
|
|
|
COPY docker-aptfile /tmp/docker-aptfile
|
|
|
|
COPY entrypoint.sh /usr/bin/
|
|
RUN chmod +x /usr/bin/entrypoint.sh
|
|
|
|
RUN apt-get update -qq && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
|
|
libpq-dev \
|
|
postgresql-client-$PG_MAJOR \
|
|
nodejs \
|
|
g++ \
|
|
libsass-dev \
|
|
yarn=$YARN_VERSION-1 \
|
|
$(cat /tmp/docker-aptfile | xargs) && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
|
truncate -s 0 /var/log/*log
|
|
|
|
RUN gem update --system && \
|
|
gem install bundler:$BUNDLER_VERSION
|
|
|
|
RUN mkdir -p $APP_PATH
|
|
WORKDIR $APP_PATH
|
|
COPY . $APP_PATH
|
|
ENTRYPOINT ["entrypoint.sh"]
|
|
|
|
|
|
FROM development as production
|
|
|
|
ENV RAILS_ENV=production
|
|
|
|
RUN bundle install --without development test && \
|
|
yarn install
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["rails", "server", "-b", "0.0.0.0"]
|