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