<!-- TITLE: Dockerfile For Rails Backend --> <!-- SUBTITLE: A quick summary of Dockerfile For Rails Backend --> # Dockerfile for Rails Backend This is the base Dockerfile can be used to serve Rails application. Based on Debian. Average size is about 750 Mb. It can be adjusted with Postgres Client Version, like 9.6, 10 or 11. Bundle version 2 is used. ## Dockerfile ```dockerfile FROM ruby:2.6.1-slim-stretch RUN apt-get update -qq && apt-get install --no-install-recommends -y \ build-essential \ patch \ ruby-dev \ zlib1g-dev \ liblzma-dev \ libxml2 \ libxml2-dev \ libpq-dev \ default-libmysqlclient-dev \ imagemagick \ git \ wget \ gnupg2 \ curl \ && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch"-pgdg main | tee /etc/apt/sources.list.d/pgdg.list \ && apt-get update -qq && apt-get install --no-install-recommends --no-upgrade -y \ # postgresql-11 \ postgresql-client-11 \ && rm -rf /var/lib/apt/lists/* # && apt-get clean autoclean \ # && apt-get autoremove -y \ # && rm -rf \ # /var/lib/apt \ # /var/lib/dpkg \ # /var/lib/cache \ # /var/lib/log RUN mkdir /opt/app COPY ./config/entrypoint.sh /usr/bin/entrypoint.sh RUN chmod +x /usr/bin/entrypoint.sh WORKDIR /opt/app RUN gem install bundler -v 2.0.1 ADD Gemfile* /opt/app/ RUN bundle install COPY . /opt/app EXPOSE 3000 #RUN $BUNDLE_PATH/bin/rails --version ``` ## Entrypoint.sh file ```bash #!/bin/sh set -e cd /opt/app export PGHOST=postgres echo "$DB_HOST:5432:$DB_NAME:$DB_USER:$DB_PASSWORD" > ~/.pgpass chmod 600 ~/.pgpass rails db:migrate rails db:seed bundle exec puma -b tcp://0.0.0.0:3000 -e ${RAILS_ENV} -C /opt/app/config/puma.rb ln -sf /proc/1/fd/1 /opt/app/log/${RAILS_ENV}.log ```