docker RUN – 不执行脚本

使用https://hub.docker.com/_/ruby/构buildRuby应用程序的Docker镜像我有一个空的Gemfile,Gemfile.lock和1行Ruby脚本( test.rb ),如下所示的框架项目:

 File.open("success.txt", 'w') { |file| file.write("Success!") } 

注意Dockerfile是:

 FROM ruby:2.1-onbuild CMD ["./test.rb"] 

但是,当我使用以下方法构build和运行它时:

 docker build -t test-ruby-app . docker run -it --name my-running-test-ruby-app test-ruby-app 

我可以看到它运行并使用docker ps退出。 如果附加到它使用:

 docker run --entrypoint=bash -it <image id> 

我可以看到Ruby脚本没有运行(没有success.txt文件)。

我可以使用./test.rb手动运行它(在附加到图像之后),并且按预期工作。

可能是什么问题呢?

你确定你正在运行脚本吗? 不应该

 CMD ["ruby", "./test.rb"] 

我的意思是,我可以假设脚本具有可执行权限,但不是shell脚本。