Ruby And Nodejs In One Image

This Dockerfiles allows to create ruby image with nodejs support

Ruby And Nodejs In One

This Dockerfile allows to create ruby image with nodejs support if frontend is maintaned by rails as well. Old fasion approach.

FROM ruby:2.4.3-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 \
    nodejs-dev \
    node-gyp \
    libssl1.0-dev \
    && 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-client-11 \
    && rm -rf /var/lib/apt/lists/*


RUN curl -fsSLO --compressed "https://nodejs.org/dist/v8.17.0/node-v8.17.0-linux-x64.tar.xz" \
  && tar -xJf "node-v8.17.0-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
  && rm "node-v8.17.0-linux-x64.tar.xz" \
  && ln -s /usr/local/bin/node /usr/local/bin/nodejs \
  && npm install -g yarn

WORKDIR /opt/app
COPY ./config/entrypoint.sh /usr/bin/entrypoint.sh

RUN gem install bundler -v 2.0.1

ADD Gemfile* /opt/app/
RUN bundle install


ARG RAILS_ENV
ARG ACTION_CABLE_URL

COPY . /opt/app

RUN yarn install --check-files
RUN RAILS_ENV=$RAILS_ENV bundle exec rake assets:precompile

EXPOSE 9292