2017-05-19 113 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