# syntax=docker/dockerfile:1.4 # Heavy layer: Ruby gems + system packages. Rebuild only when Gemfile.lock changes. # docker build -f Dockerfile.deps -t custom/dalan-deps:1 . FROM ruby:2.7.8 ARG UID=1000 ARG GID=1000 ENV APP_HOME=/home/app \ BUNDLE_PATH=/opt/vendor/bundle \ TZ=UTC RUN groupadd -r --gid ${GID} app \ && useradd --system --create-home --home ${APP_HOME} --shell /sbin/nologin --no-log-init \ --gid ${GID} --uid ${UID} app WORKDIR $APP_HOME RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends default-libmysqlclient-dev git curl wget \ && rm -rf /var/lib/apt/lists/* \ && gem install bundler:2.2.16 COPY Gemfile Gemfile.lock ./ RUN mkdir -p ${BUNDLE_PATH} \ && chown -R app:app ${BUNDLE_PATH} ${APP_HOME} \ && su app -s /bin/bash -c "bundle config set --local path ${BUNDLE_PATH} \ && bundle config set --local without 'development test' \ && bundle install --jobs $(nproc)" USER app ENV PATH="${BUNDLE_PATH}/bin:${PATH}"