shell - 使用 Docker 部署應用程式如何執行腳本檔案?
天蓬老师
天蓬老师 2017-04-24 09:10:20
0
1
613

我想用 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 的路徑問題,怎麼指定正確的路徑呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(1)
左手右手慢动作

bundle 沒有安裝吧,在執行 bundle 指令前先安裝一下 bundle。

如果確定一定以及肯定 bundle 安裝了,那應該是環境變數的問題,沒有找到。用 which bundle 找到,再在執行 bundle 前修改環境變數。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板