Docker中的Ruby设置

问题描述 投票:0回答:1

我需要获取安装了ruby的docker映像> = 2.5,然后在容器中运行bundle exec rake test。我知道可以通过使用官方的docker ruby image来简单地实现,但是由于许可限制,我无法做到这一点。

所以,我需要处理的是image with rbenv pre-configured。经过多次试验和错误,我到达了以下dockerfile:

FROM launcher.gcr.io/google/ruby:latest

RUN rbenv install 2.5.7
RUN rbenv rehash
RUN rbenv global 2.5.7

COPY ./ /my-app
WORKDIR /my-app
RUN gem install bundler
RUN bundle install
ENTRYPOINT bundle exec rake test

我用docker build -f dockerfile.tests . -t tests构建它,然后用docker run -i tests运行,得到的是:

/usr/bin/env: 'ruby2.5': No such file or directory

这里有什么错误的想法吗?谢谢!

ps。我用RVM尝试了同样的方法,最终结果是完全一样的错误。也尝试过(最初)使用apt install安装ruby 2.5,但可通过apt获得的最新版本是2.3。

ruby docker rake bundler rbenv
1个回答
0
投票

[如果您不想使用正式的Ruby映像(我也这样做,因为它太大了,您可以轻松地从头开始构建基于Alpine的映像,不需要RVM或rbenv。

This is my Dockerfile

FROM alpine:3.10

ENV BUILD_PACKAGES bash curl curl-dev ruby-dev build-base
ENV RUBY_PACKAGES \
  ruby ruby-io-console ruby-irb \
  ruby-json ruby-etc ruby-bigdecimal ruby-rdoc \
  libffi-dev zlib-dev
ENV TERM=linux
ENV PS1 "\n\n>> ruby \W \$ "

RUN apk --no-cache add $BUILD_PACKAGES $RUBY_PACKAGES

RUN echo 'gem: --no-document' > /etc/gemrc && \
    gem install bundler

RUN gem update --system

RUN bundle config --global silence_root_warning 1

CMD bash

您甚至可能不需要我在这里安装的所有高山软件包。对我来说,随着时间的推移,我添加了这些,因为我发现如果没有它们,某些原生宝石将无法正确构建。

© www.soinside.com 2019 - 2024. All rights reserved.