Ruby Dockerfile에 특정 버전의 번들러를 추가하는 방법
Gemfile.lock
및 특정 dep에 대해 예상한 버전과 호환되지 않습니다.오류 메시지는 내
bundler
버전을 로컬로 업데이트하라는 지시였습니다.그러나 이것은 로컬 프로젝트에서 작동할 수 있지만 Docker가 관련되어 있을 때 이것은 승려가 아닌 Ruby 개발자에게는 분명하지 않습니다.
솔루션은 다음과 같습니다.
ENV BUNDLER_VERSION='X.X.X'
RUN gem install bundler --no-document -v 'X.X.X'
X.X.X
를 필요한 버전으로 바꾸십시오. 저에게는 2.2.4
였습니다. 이미지 빌드 캐싱에 도움이 될 수 있도록 시스템 패키지가 설치된 후에 이것을 배치했습니다. (이것도 완전히 틀릴 수 있습니다!)이는 레거시 프로젝트 또는 지원되지 않는 Docker 이미지 기반에만 적용되는 것이 아니라 도구 세트에 필요한 정확한 번들러 버전을 관리하는 데 매우 유용할 수 있습니다.
다음은 참조용으로 내 프로젝트의 최종
Dockerfile
입니다. 격리된 React 구성 요소와 PostCSS 매직에 webpacker
를 사용하고 있습니다.FROM ruby:2.5.1
# Replace with whoever you are!
LABEL maintainer="[email protected]"
# Allow apt to work with https-based sources
RUN apt-get update -yqq && apt-get install -yqq --no-install-recommends \
apt-transport-https
# Ensure we install an up-to-date version of Node
# see https://github.com/yarnpkg/yarn/issues/2888
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
# Ensure latest packages for Yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | \
tee /etc/apt/sources.list.d/yarn.list
# Convention to use update and install on same line to actually install new packages
# We also use the line separation to make this easier to change
RUN apt-get update -yqq && apt-get install -yqq --no-install-recommends \
nodejs \
yarn
# Setup our bundler version specifically
ENV BUNDLER_VERSION='X.X.X'
RUN gem install bundler --no-document -v 'X.X.X'
# Load our Gemfile and JS locks
COPY Gemfile* $YOUR_APPLICATION_PATH
COPY package.json $YOUR_APPLICATION_PATH
WORKDIR $YOUR_APPLICATION_PATH
# Install our dependencies
ENV BUNDLE_PATH /gems
RUN bundle install
# Handle yarn caching and install deps
COPY package.json yarn.lock ./
RUN yarn install --check-files
# Build the static assets and webpack data
COPY . $YOUR_APPLICATION_PATH
RUN bundle exec rake assets:precompile
# Serve the application
ENV RAILS_SERVE_STATIC_FILES=true
ENV RAILS_LOG_TO_STDOUT=true
CMD ["bin/rails", "s", "-b", "0.0.0.0", "-e", "production"]
이 문제로 고생하는 누군가가 이것을 발견하기를 바랍니다! 이것이 작동하지 않으면 저에게 직접 연락 주시기 바랍니다.
행운과 행복한 해킹!
Reference
이 문제에 관하여(Ruby Dockerfile에 특정 버전의 번들러를 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seedyrom/how-to-add-a-specific-version-of-bundler-to-your-ruby-dockerfile-5chl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)