mberlanda/cheidelacoriera

View on GitHub
Dockerfile.worker

Summary

Maintainability
Test Coverage
############################
# STEP 1 build base image
############################

FROM ruby:2.7.8-bullseye as base

RUN apt-get update \
    && apt-get install -y apt-transport-https \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
      bash curl nginx sudo libjemalloc-dev \
      postgresql-client apt-transport-https

ENV RAILS_ENV "production"
ENV RACK_ENV "production"
ENV RAILS_SERVE_STATIC_FILES "enabled"
ENV RAILS_LOG_TO_STDOUT "enabled"

ENV WORKDIR /app/cheidelacoriera
WORKDIR "${WORKDIR}"

COPY .ruby-version Gemfile Gemfile.lock "${WORKDIR}/"

RUN gem install bundler -v "$(tail -n 1 Gemfile.lock | tr -d '[:blank:]')"
# RUN bundle config set deployment 'true' && \
RUN bundle config set no-cache 'true' && \
    bundle config set without 'development test lint'
RUN bundle install --jobs 4 || bundle check

COPY Rakefile config.ru "${WORKDIR}/"

COPY ./app "${WORKDIR}/app"
COPY ./bin "${WORKDIR}/bin"
COPY ./config "${WORKDIR}/config"
COPY ./data "${WORKDIR}/data"
COPY ./db "${WORKDIR}/db"
COPY ./lib "${WORKDIR}/lib"
COPY ./public "${WORKDIR}/public"
COPY ./vendor "${WORKDIR}/vendor"

############################
# STEP 2 compile assets
############################

FROM base as assets

ENV NODE_ENV "production"

# Install node and yarn
ADD https://deb.nodesource.com/gpgkey/nodesource.gpg.key /tmp/node-pubkey.gpgkey
RUN apt-key add /tmp/node-pubkey.gpgkey && rm /tmp/node-pubkey.gpgkey
ADD https://dl.yarnpkg.com/debian/pubkey.gpg /tmp/yarn-pubkey.gpg
RUN apt-key add /tmp/yarn-pubkey.gpg && rm /tmp/yarn-pubkey.gpg
RUN echo "deb https://deb.nodesource.com/node_16.x/ stretch main" > /etc/apt/sources.list.d/nodesource.list \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    # Need to update debian version
    && rm /etc/apt/sources.list.d/nodesource.* \
    && apt-get update --allow-releaseinfo-change\
    && apt-get install -y --no-install-recommends \
       nodejs yarn

COPY .yarnclean yarn.lock package.json .browserslistrc babel.config.js postcss.config.js "${WORKDIR}/"

RUN rm -rf ./public/assets ./public/packs ./public/packs-test
RUN ./bin/compile_assets

############################
# STEP 3 build worker image
############################

FROM base

# Cleanup apt repositories
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Copy the assets from the previous step
COPY --from=assets "${WORKDIR}/public" "${WORKDIR}/public"

COPY ./stack "${WORKDIR}/stack"
COPY ./stack/nginx/default-site.conf /etc/nginx/sites-available/default
COPY ./stack/nginx/nginx.conf /etc/nginx/nginx.conf

ENV SECRET_KEY_BASE $(bundle exec rake secret)

ENTRYPOINT ["./stack/docker/entrypoint-worker.sh"]

CMD ["./stack/docker/start-worker.sh"]