图错误exec:“bundle”:在$ PATH中找不到可执行文件

我试图运行没有数据库使用无花果的Dockerized Sinatra应用程序,但我不断收到此错误:

$ fig up Recreating my_web_1... Cannot start container 93f4a091bd6387bd28d8afb8636d2b14623a08d259fba383e8771fee811061a3: exec: "bundle": executable file not found in $PATH 

这是Dockerfile

 FROM ubuntu-nginx MAINTAINER Ben Bithacker ben@bithacker.org COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock WORKDIR /app RUN ["/bin/bash", "-l", "-c", "bundle install"] ADD config/container/start-server.sh /usr/bin/start-server RUN chmod +x /usr/bin/start-server ADD . /app EXPOSE 9292 CMD ["/usr/bin/start-server"] 

config / container / start-server.sh看起来像这样

 #!/bin/bash cd /app source /etc/profile.d/rvm.sh bundle exec rackup config.ru 

fig.yml如下所示:

 web: build: . command: bundle exec rackup config.ru volumes: - .:/app ports: - "3000:3000" environment: - SOME_VAR=adsfasdfgasdfdfd - SOME_VAR2=ba2gezcjsdhwzhlz24zurg5ira 

我认为这个设置有几个问题。 bundler在哪里安装? 通常你会apt-get install ruby-bundler ,它会一直在你的路上。

我相信你的直接的问题是你用Dockerfile中的command覆盖了Dockerfile中的fig.yml 。 我假设(基于start-server.sh的内容),你需要设置的path? 你应该从fig.yml删除command行。

您也正在使用fig.ymlvolumes: .:/app覆盖容器中的/app目录。 你可能也想删除该行。