2017-04-17 59 views
0

我爲服務編寫了一個Dockerfile(我有一個CMD指向啓動進程的腳本),但在進程啓動後我無法運行任何其他命令?我嘗試使用'&'在後臺運行進程,以便在進程啓動後運行其他命令,但它不工作?任何想法如何實現這一目標?如何在進程啓動後執行docker命令

例如,考慮我啓動了一個數據庫服務器,並且只想在數據庫進程啓動後運行一些腳本,我該怎麼做?

編輯1:

我的具體使用情況我正在運行的RabbitMQ服務器作爲一個服務,我想創建一個新的用戶,讓他的管理員,並刪除默認的guest用戶一旦服務啓動一個容器。我可以通過登錄Docker容器手動完成,但我想通過將它們附加到啓動rabbitmq服務的shell腳本來實現自動化,但這不起作用。

任何幫助表示讚賞!

Regards

+0

如果你想運行一個數據庫服務器,我建議你將它作爲一個單獨的容器來運行。 – n00dl3

+0

如果你想沿第一個進程運行另一個進程,那麼'&'應該工作。我曾經寫過一個在mysql日誌中使用'cat'和'grep'的腳本,一旦我需要一個快速和骯髒的解決方案,就會尋找「已成功啓動」。 – n00dl3

+0

您嘗試過「運行」嗎? –

回答

0

具體圍繞你的問題與兔子MQ - 你可以創建一個rabbitmq.config文件,並在創建碼頭圖像時複製該文件。

在該文件中,你可以指定一個default_userdefault_pass當數據庫從頭開始設置看https://www.rabbitmq.com/configure.html

,作爲一般性的問題將被創建 - 你可以在進入點更改爲運行腳本無論你需要什麼,你想要的服務,而不是服務的運行腳本

+0

的問題,謝謝!我認爲這是一個好主意,我會爲Rabbit MQ實施。 –

0

我部分理解你的問題。根據我從您的問題中看到的內容,我建議您提及複製命令以將要運行的腳本複製到dockerfile中。構建映像並運行容器後,啓動數據庫服務。然後執行容器並進入容器,手動運行腳本。

如果您在dockerfile中有CMD命令,那麼它將被您在執行過程中指定的命令覆蓋。所以,我認爲除非在dockerfile中沒有CMD,否則我不認爲您有任何其他選項可以運行該腳本。

相關問題