Rails docker – 捆绑自定义path不能访问gem

我有一个Dockerfile,主要部分如下:

FROM ruby:2.2.4 # Create user and group RUN groupadd myapp --gid 6156 && \ useradd --home /home/myapp --create-home --shell /bin/false --uid 6157 --gid 6156 myapp # Create and switch to the repo dir ENV REPO_DIR /home/myapp/repo RUN mkdir $REPO_DIR WORKDIR $REPO_DIR # First install gems ADD Gemfile $REPO_DIR ADD Gemfile.lock $REPO_DIR RUN mkdir -p /var/bundle &&\ chown -R myapp:myapp /var/bundle &&\ mkdir $REPO_DIR/.bundle &&\ chown -R myapp:myapp $REPO_DIR/.bundle RUN su -c " cd $REPO_DIR && bundle install --deployment --path /var/bundle" -s /bin/bash -l myapp ... CMD ["rails","s", "-b", "0.0.0.0"] 

主要部分是

  • 作为客户myapp用户运行
  • 使用--path /var/bundle--path /var/bundle参数进行bundle install

当我做docker-compose up ,图像正确地build立。 但是,当我跑步

 docker-compose run --service-ports api /bin/bash 

接着,

 $ bundle check 

说所有的gem都失踪了

 $ bundle config 

 Settings are listed in order of priority. The top value will be used. silence_root_warning Set via BUNDLE_SILENCE_ROOT_WARNING: "1" app_config Set via BUNDLE_APP_CONFIG: "/usr/local/bundle" bin Set via BUNDLE_BIN: "/usr/local/bundle/bin" path Set via BUNDLE_PATH: "/usr/local/bundle" 

有一些问题,因为在这种情况下BUNDLE_PATH应该是/var/bundle

bundle exec rails显然rails not found. Please install all missing gems rails not found. Please install all missing gems

我应该怎么做才能从/var/bundle访问已安装的gem?

在Rails Docker容器中 , Bundle安装失败,看起来很相似,但没有帮助。 我所有的testing都在本地。