FROM ruby:2.6

# Install dependencies
RUN deps='libmagic-dev chromium' && \
    apt-get update && \
    apt-get install --no-install-recommends -y $deps && \
    rm -Rf /var/lib/apt/lists/* /var/cache/apt/*

ENV PORT=3000 \
    SMTP_SERVER_PORT=2525 \
    RAILS_ENV=development \
    RAILS_LOG_TO_STDOUT=true \
    RAILS_SERVE_STATIC_FILES=true \
    \
    CHROMIUM_FLAGS=--no-sandbox \
    \
    BUNDLE_PATH=/home/app/bundle \
    BUNDLE_APP_CONFIG=/home/app/bundle/config

# Run app and all commands as user 'app'. This avoids changing permissions
# for files in mounted volume. Symlink for similarity with production image.
RUN adduser --gecos GECOS --disabled-password --shell /bin/bash app && \
    ln -s /home/app/src /usr/src/app
USER app

WORKDIR /home/app/src

# Copy files needed for installing gem dependencies, and install them.
COPY Gemfile Gemfile.lock ./
COPY plugins ./plugins
RUN bundle config build.nokogiri "--use-system-libraries" && \
    bundle install --frozen -j 4

# Copy the application code
COPY . ./

EXPOSE 3000

# cleanup, and by default start web process from Procfile
ENTRYPOINT ["./docker-entrypoint.sh"]
CMD ["./proc-start", "web"]