首页 > 开发 > 云计算 > 正文

使用 Docker 部署应用如何执行脚本文件?

2017-09-12 09:52:13  来源: 网友分享

我想用 Docker 部署一个 Rails 应用。

Dockerfile 的内容如下:

FROM ruby:2.2.2ENV APP_HOME /myappRUN mkdir $APP_HOMEWORKDIR $APP_HOMEADD Gemfile $APP_HOME/GemfileADD Gemfile.lock $APP_HOME/Gemfile.lockADD init.sh $APP_HOME/RUN export LANG=C.UTF-8 && bundle installADD . $APP_HOMECMD ["sh", "init.sh"]

init.sh 程序执行脚本内容如下:

#!/bin/shbundle exec rake db:setupbundle exec rake db:seed_fubundle exec sidekiq -C config/sidekiq.ymlbundle exec rails server -b 0.0.0.0

当我编译完这个程序镜像:

docker build -t myapp .

运行它时:

docker run --name web -d -p 3000:3000 myapp

从日志中看到:

docker logs webinit.sh: 2: init.sh: bundle: not foundinit.sh: 3: init.sh: bundle: not foundinit.sh: 4: init.sh: bundle: not foundinit.sh: 5: init.sh: bundle: not found

是执行 bundle 的路径问题,怎么指定正确的路径呢?

解决方案

bundle 没有安装吧,在执行 bundle 命令前先安装一下 bundle。

如果确定一定以及肯定 bundle 安装了,那应该是环境变量的问题,没有找到。用 which bundle 找到,再在执行 bundle 前修改环境变量。