我想用 Docker 部署一个 Rails 应用。
Dockerfile 的内容如下:
FROM ruby:2.2.2
ENV APP_HOME /myapp
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
ADD Gemfile $APP_HOME/Gemfile
ADD Gemfile.lock $APP_HOME/Gemfile.lock
ADD init.sh $APP_HOME/
RUN export LANG=C.UTF-8 && bundle install
ADD . $APP_HOME
CMD ["sh", "init.sh"]
init.sh 程序执行脚本内容如下:
#!/bin/sh
bundle exec rake db:setup
bundle exec rake db:seed_fu
bundle exec sidekiq -C config/sidekiq.yml
bundle exec rails server -b 0.0.0.0
当我编译完这个程序镜像:
docker build -t myapp .
运行它时:
docker run --name web -d -p 3000:3000 myapp
从日志中看到:
docker logs web
init.sh: 2: init.sh: bundle: not found
init.sh: 3: init.sh: bundle: not found
init.sh: 4: init.sh: bundle: not found
init.sh: 5: init.sh: bundle: not found
是执行 bundle
的路径问题,怎么指定正确的路径呢?
ringa_lee2017-04-24 09:12:20
bundle がインストールされていません。bundle コマンドを実行する前に、bundle をインストールしてください。
バンドルが確実にインストールされている場合は、環境変数に問題があるはずですが、環境変数が見つかりませんでした。 which bundle
を使用してそれを見つけ、バンドルを実行する前に環境変数を変更します。