作者:77阿建 | 来源:互联网 | 2023-01-12 14:46
红宝石和捆扎机的新产品。我正在使用此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
警告。
通常,您也不会bundler
像CMD
容器那样运行,但是您可能会bundler
在RUN
映像构建步骤中运行。
无论如何,以非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" ]