shell - 使用 Docker 部署应用如何执行脚本文件?
天蓬老师
天蓬老师 2017-04-24 09:10:20
0
1
616

我想用 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)
左手右手慢动作

번들이 설치되지 않았습니다. 번들 명령을 실행하기 전에 번들을 설치하세요.

번들이 설치되어 있다고 확신한다면 환경 변수를 찾을 수 없는 문제일 것입니다. 번들을 실행하기 전에 which bundle을 사용하여 찾아서 환경 변수를 수정하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿