84 lines
2.6 KiB
Docker
84 lines
2.6 KiB
Docker
FROM ruby:2.6.5-alpine3.10
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Install Project dependencies
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
RUN apk update -qq && apk add git nodejs postgresql-client ruby-dev build-base \
|
|
libxml2-dev libxslt-dev pcre-dev libffi-dev postgresql-dev tzdata imagemagick
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Install required bundler version
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
RUN gem install bundler:2.0.2
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Install Yarn
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
ENV PATH=/root/.yarn/bin:$PATH
|
|
RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
|
yarn
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Define working directory
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
WORKDIR /usr/src/app
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Copy Gemfile and run bundle install
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
COPY Gemfile /usr/src/app/Gemfile
|
|
COPY ./Gemfile ./Gemfile.lock ./
|
|
RUN bundle install --jobs 20 --retry 5
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Copy Package.json and yarn.lock
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
COPY ./package.json ./yarn.lock ./
|
|
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# Install packages
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
RUN yarn install && yarn check --integrity
|
|
|
|
# timeout extension required to ensure
|
|
# system work properly on first time load
|
|
ENV RACK_TIMEOUT_WAIT_TIMEOUT=10000 \
|
|
RACK_TIMEOUT_SERVICE_TIMEOUT=10000 \
|
|
STATEMENT_TIMEOUT=10000
|
|
|
|
# Run mode configuration between dev / demo
|
|
# for entrypoint script behaviour
|
|
ENV RUN_MODE="demo"
|
|
|
|
# Database URL configuration - with user/pass
|
|
ENV DATABASE_URL="postgresql://devto:devto@db:5432/PracticalDeveloper_development"
|
|
|
|
# DB setup / migrate script triggers on boot
|
|
ENV DB_SETUP="false" \
|
|
DB_MIGRATE="false"
|
|
|
|
#
|
|
# Let's setup the public uploads folder volume
|
|
#
|
|
RUN mkdir -p /usr/src/app/public/uploads
|
|
VOLUME /usr/src/app/public/uploads
|
|
|
|
# Entrypoint and command to start the server
|
|
COPY docker-entrypoint.sh /usr/bin/
|
|
RUN chmod +x /usr/bin/docker-entrypoint.sh
|
|
|
|
COPY . /usr/src/app
|