kubernaut/dockerfiles/alpine.Dockerfile

52 lines
1016 B
Docker

ARG RUBY_VERSION="3.4.3"
FROM docker.io/library/ruby:${RUBY_VERSION}-alpine AS base
WORKDIR /kubernaut
RUN <<EOT
apk update -q
apk add bash
rm -rf /var/cache/apk
gem update --system --no-document
gem install -N bundler
EOT
ENV RACK_ENV="production" \
BUNDLE_DEPLOYMENT=true \
BUNDLE_PATH="/usr/local/bundle" \
BUNDLE_WITHOUT="development test"
FROM base AS build
RUN <<EOT
apk add musl-dev gcc make
rm -rf /var/cache/apk
EOT
COPY Gemfile Gemfile.lock ./
RUN <<EOT
bundle install
rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
EOT
COPY . .
FROM base
ENV PORT=4567
RUN <<EOT
addgroup --system --gid 666 kubernaut
adduser --system --uid 666 --ingroup kubernaut --shell /bin/bash --disabled-password kubernaut
EOT
COPY --from=build /usr/local/bundle /usr/local/bundle
COPY --from=build /kubernaut /kubernaut
USER kubernaut:kubernaut
EXPOSE $PORT
ENTRYPOINT [ "/kubernaut/dockerfiles/entrypoint.sh" ]
CMD [ "bundle", "exec", "puma" ]