图错误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.yml
的volumes: .:/app
覆盖容器中的/app
目录。 你可能也想删除该行。