gpt4 book ai didi

ruby - 如何使用 dockerfile 安装 ruby​​ 和 bundler?

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:38 28 4
gpt4 key购买 nike

这里是 ruby​​ 和 bundler 的新手。我正在使用此 docker 文件将它们安装在 docker 镜像中:

FROM alpine:3.5

# Install Ruby, Ruby Bundler and other ruby dependencies

RUN apk add --update \
ruby ruby-bigdecimal ruby-bundler \
ca-certificates libressl \
libressl-dev build-base ruby-dev \
ruby-rdoc ruby-io-console ruby-irb; \
\
&& bundle config build.nokogiri --use-system-libraries; \
&& bundle config git.allow_insecure true; \
\
&& gem install json foreman --no-rdoc --no-ri; \
&& gem cleanup; \
&& rm -rf /usr/lib/ruby/gems/*/cache/*; \
&& apk del libressl-dev build-base ruby-dev; \
&& rm -rf /var/cache/apk/* /tmp;

CMD ["bundle"]

当我运行 docker run 时,我得到:

Don't run Bundler as root. Bundler can ask for sudo if it is needed,
and installing your bundle as root will break this application for all
non-root users on this machine.
Could not locate Gemfile or .bundle/ directory

我该如何解决这个问题?我只想安装 ruby​​ 和 ruby​​-bundle 并完成这个 ...

最佳答案

有预建ruby包含 bundler 的图像(例如 Alpine 3.11 Ruby 2.7)。从他们开始更容易,因为他们通常使用当前的“最佳实践”来构建。

注意他们设置了 BUNDLE_SILENCE_ROOT_WARNING环境变量 ENV图像构建中的指令以删除该 root 警告。

您通常不会将 bundler 作为 CMD 来运行对于容器,您可以在 RUN 期间运行 bundler虽然图像构建步骤。

在任何情况下,以非 root 用户身份运行容器都不是一个坏主意。使用 USER改变这一点的指令。

FROM ruby:2.7
WORKDIR /app
ADD . /app/
RUN set -uex; \
bundle install; \
adduser -D rubyapp; \
mkdir -p /app/data; \
chown rubyapp /app/data
USER rubyapp
CMD [ "ruby", "whatever.rb" ]

关于ruby - 如何使用 dockerfile 安装 ruby​​ 和 bundler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819364/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com