50 lines
910 B
Docker
50 lines
910 B
Docker
ARG RUBY_VERSION="3.4.3"
|
|
FROM docker.io/library/ruby:${RUBY_VERSION}-alpine AS base
|
|
|
|
WORKDIR /app
|
|
|
|
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
|
|
|
|
|
|
FROM base
|
|
|
|
ENV PORT=4567
|
|
|
|
RUN adduser --home /app --disabled-password app
|
|
|
|
USER app:app
|
|
|
|
COPY --from=build /usr/local/bundle /usr/local/bundle
|
|
COPY --from=build --chown=app:app /app /app
|
|
|
|
COPY --chown=app:app . .
|
|
|
|
EXPOSE $PORT
|
|
ENTRYPOINT [ "/app/dockerfiles/entrypoint.sh" ]
|
|
CMD [ "bundle", "exec", "puma" ]
|