ARG RUBY_VERSION="3.4.3" ARG BASE_REGISTRY="docker.io" ARG DEBIAN_VERSION="bookworm" FROM ${BASE_REGISTRY}/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} 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 rm -f /etc/apt/apt.conf.d/docker-clean RUN \ --mount=type=cache,id=var-cache-apt,target=/var/cache/apt,sharing=locked \ --mount=type=cache,id=var-lib-apt,target=/var/lib/apt,sharing=locked \ apt-get update -qq; \ apt-get install --yes --no-install-recommends \ libjemalloc2 RUN \ --mount=type=cache,id=usr-local-bundle-cache,target=${BUNDLE_PATH},sharing=locked \ gem update --system --no-document; \ gem install -N bundler ENV DEBIAN_FRONTEND="noninteractive" FROM base AS build RUN \ --mount=type=cache,id=var-cache-apt,target=/var/cache/apt,sharing=locked \ --mount=type=cache,id=var-lib-apt,target=/var/lib/apt,sharing=locked \ apt-get update -qq; \ apt-get install --yes --no-install-recommends \ build-essential 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 \ groupadd --system --gid 666 kubernaut; \ useradd --system --uid 666 --gid kubernaut --create-home --shell /bin/bash 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" ]