我正在尝试使用图运行一个没有数据库的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"]
配置/容器/启动 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
我认为这种设置有几个问题。捆绑器安装在哪里?通常你会apt-get install ruby-bundler
,它会一直在你的路上。
我相信你的直接问题是你用fig.yml
中的command
覆盖了Dockerfile
的CMD
。 我假设(基于start-server.sh
的内容(您需要设置路径?您应该从fig.yml
中删除command
行。
您还将覆盖容器中的/app
目录,volumes: .:/app
在fig.yml
中。您可能还想删除该行。