66 lines
1.5 KiB
Docker
66 lines
1.5 KiB
Docker
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 <<EOT
|
|
gem update --system --no-document
|
|
gem install -N bundler
|
|
EOT
|
|
|
|
|
|
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 <<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
|
|
groupadd --system --gid 666 kubernaut
|
|
useradd --system --uid 666 --gid kubernaut --create-home --shell /bin/bash kubernaut
|
|
EOT
|
|
|
|
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" ]
|