2017-05-19 72 views
1

使用https://hub.docker.com/_/ruby/我有一个空的Gemfile,Gemfile.lock的和1号线Ruby脚本(test.rb)这样一个骨架项目建设码头工人图像一个Ruby应用程序:搬运工RUN - 不执行脚本

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

注意Dockerfile是:

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

然而,当我建立和使用运行它:

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手动(在附加到图像后)运行它,它按预期工作。

可能是什么问题?

+1

将您的Dockerfile添加到您的问题。 – Cyrus

+0

在你的Dockerfile中,你是否将文件复制到图像中?这两行Dockerfile没有显示你这样做。 –

+0

'-onbuild'图像变种就是这样做的。它实际上将它复制到'/ usr/src/app':https://github.com/docker-library/ruby/blob/master/2.1/onbuild/Dockerfile –

回答

1

您确定您正确运行脚本吗?不应该是

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

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

+1

虽然我同意这个答案,但我认为其实有两个问题正在进行。其次是他们正在测试_new_容器中的文件。反正这个文件不会存在于他们的测试中。你应该在答案中指出这一点。 –

+0

你的意思是我们不知道脚本是如何放在容器中的?我认为卷 – Ursus

+0

为什么不呢?我们不知道。用户没有提供反馈 – Ursus