热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用dockerfile安装ruby和bundler?

如何解决《如何使用dockerfile安装ruby和bundler?》经验,为你挑选了1个好方法。

红宝石和捆扎机的新产品。我正在使用此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并完成此操作...



1> Matt..:

有预先建立的红宝石图像(Alpine 3.6 Ruby 2.4)包括bundler。从他们开始比较容易,因为他们通常使用当前的“最佳实践”进行构建。

请注意,他们在映像构建中BUNDLE_SILENCE_ROOT_WARNING使用ENV指令设置了环境变量以删除该root警告。

通常,您也不会bundlerCMD容器那样运行,但是您可能会bundlerRUN映像构建步骤中运行。

无论如何,以非root用户身份运行容器并不是一个坏主意。使用USER指令来更改它。

FROM ruby:2.4-stretch
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" ]


推荐阅读
author-avatar
77阿建
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有