Skip to content

Commit

Permalink
CI: Reducing Greenlight Docker image size (#5073)
Browse files Browse the repository at this point in the history
* CI: Limited more local files from propagating to image.

* CI: Reduced the image size.

---------

Co-authored-by: Ahmad Farhat <[email protected]>
  • Loading branch information
KH-Amir-TN and farhatahmad authored May 15, 2023
1 parent 9f2441b commit 9b48e32
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 53 deletions.
29 changes: 17 additions & 12 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,31 @@
README.md
SECURITY.md
.github
.gitlab-ci.yml
.rvmrc

# Rails
.env*
*.rbc
capybara-*.html
.rspec
log
tmp
**/.bundle/
*.dev
.rubocop.yml
log/*
tmp/*
storage/*
/db/**/*.sqlite3
/db/**/*.sqlite3-journal
/db/production
/db/production-postgres
public/assets
public/b
public/**/assets/
coverage/
.rvmrc
vendor/bundle
.bundle
Dockerfile
.gitlab-ci.yml
.rubocop.yml
spec
test
vendor/*
Dockerfile*
spec/
test/
**/node_modules/
app/assets/builds/*
dockerfiles/
!**/.keep
72 changes: 31 additions & 41 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,56 +1,46 @@
FROM alpine:3.17 AS alpine
FROM ruby:alpine3.17 AS base

ARG RAILS_ROOT=/usr/src/app
ENV RAILS_ROOT=${RAILS_ROOT}

FROM alpine AS base
WORKDIR $RAILS_ROOT
RUN apk add --no-cache \
libpq \
libxml2 \
libxslt \
ruby \
ruby-irb \
ruby-bigdecimal \
ruby-bundler \
ruby-json \
tzdata \
bash \
shared-mime-info

FROM base
RUN apk add --no-cache \
build-base \
curl-dev \
git \
gettext \
imagemagick \
libxml2-dev \
libxslt-dev \
pkgconf \
postgresql-dev \
ruby-dev \
nodejs npm \
yarn \
yaml-dev \
zlib-dev \
&& ( echo 'install: --no-document' ; echo 'update: --no-document' ) >>/etc/gemrc
COPY . ./
RUN bundle install -j4 \
&& yarn install

ARG RAILS_ENV
ENV RAILS_ENV=${RAILS_ENV:-production}
ARG NODE_ENV
ENV NODE_ENV=${RAILS_ENV}
ARG RAILS_LOG_TO_STDOUT
ENV RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT:-true}
ARG RAILS_SERVE_STATIC_FILES
ENV RAILS_SERVE_STATIC_FILES=${RAILS_SERVE_STATIC_FILES:-true}
ARG PORT
ENV PORT=${PORT:-3000}

EXPOSE ${PORT}

ARG VERSION_TAG
ENV VERSION_TAG=$VERSION_TAG
ENV PATH=$PATH:$RAILS_ROOT/bin
WORKDIR $RAILS_ROOT
RUN bundle config --local deployment 'true' \
&& bundle config --local without 'development:test'

FROM base as build

ARG PACKAGES='alpine-sdk libpq-dev'
COPY Gemfile Gemfile.lock ./
RUN apk update \
&& apk add --update --no-cache ${PACKAGES} \
&& bundle install --no-cache \
&& bundle doctor

FROM base as prod

ARG PACKAGES='libpq-dev tzdata imagemagick yarn bash'
COPY --from=build $RAILS_ROOT/vendor/bundle ./vendor/bundle
COPY package.json yarn.lock ./
RUN apk update \
&& apk add --update --no-cache ${PACKAGES} \
&& yarn install --production --frozen-lockfile \
&& yarn cache clean
COPY . ./
RUN apk update \
&& apk upgrade \
&& update-ca-certificates

EXPOSE ${PORT}
ENTRYPOINT [ "./bin/start" ]

0 comments on commit 9b48e32

Please sign in to comment.