2015-09-26 237 views
0

我想提出一個西納特拉應用程序容器內,但每當我想看到的變化我必須分離,並運行:我可以從集裝箱碼頭內重新啓動碼頭集裝箱嗎?

docker restart <container_ID>

看到的變化。

是否有任何方法可以從內部重新啓動Docker以查看更改?

我克隆https://github.com/tcnksm-sample/docker-sinatra.git

構建sudo docker build -t sinatra .

運行容器sudo docker run -d -p 4567:4567 sinatra

進入集裝箱碼頭sudo docker exec -it <container_ID> bash

改變了app.rb文件,但什麼都沒有改變對http://localhost:4567, 所以我從分離容器並運行docker restart <container_ID>以查看更改。因爲我要更改app.rb很多每次我改變一些東西我都要分離並運行,這非常不方便docker restart <container_ID>

+0

您正在使用什麼容器? Dockerfile的外觀如何?你如何運行sinatra?您必須爲我們提供_something_才能使用;-) – mhutter

回答

0

您不應該重新啓動所有docker引擎本身。

如果您Dockerfile拉從回購的變化,重做bundle install,如this Dockerfile,所有你需要做的是,爲in this example

# on docker server or the same machine 
$ sudo docker stop container-id 
$ sudo docker pull luisbebop/docker-sinatra-hello-world 
$ sudo docker run -d -p 5000:5000 luisbebop/docker-sinatra-hello-world 
+0

如果我想更改ruby文件以創建自己的應用程序,該怎麼辦?我不應該附加容器終端,然後更改server.rb文件並查看更改?所有在集裝箱碼頭 –

+0

@abdelrahmankhaled最好停止,重建和重新啓動容器,以確保可重複性。如果您直接從Docker exec bash會話中進行修改,一旦容器停止並被刪除,這些更改將會丟失。 – VonC

+0

@abdelrahmankhaled @abdelrahmankhaled關於你的Dockerfile,我的回答站:https://github.com/tcnksm-sample/docker-sinatra/blob/9afef691a93593db30960a4c49958396fce7701b/Dockerfile#L18-L19 – VonC