2017-07-11 49 views
0

我的Dockerfile有一個腳本可以在ENTRYPOINT上運行。 容器計劃在我的代碼所在的卷裝上運行,一旦容器裝上卷,就需要運行幾個命令。Docker ENTRYPOINT在卷裝載後運行

但是,從運行容器時得到的錯誤來看,我相信Docker卷掛載發生在ENTRYPOINT腳本之後。

我確定可以運行命令docker exec選項一旦容器啓動。但是,這使得更多的運行命令行。是否有任何解決方法,即使使用docker-compose?

Dockerfile:

FROM my-container 
WORKDIR /my-mount-dir 

ADD startup-script.sh /root/startup-script.sh 
ENTRYPOINT ["/root/startup-script.sh"] 

泊塢窗運行:

搬運工運行-itd -v /家庭/用戶/目錄:/我貼裝-DIR積聚容器

注意: startup-script.sh包含應該在掛載的目錄文件上運行的命令。

+0

什麼是您的碼頭版本? – ichbinblau

+0

Docker版本17.06.0-ce,build 02c1d87 – Vineeth

+0

docker的默認行爲是在您的docker入口點進程啓動之前設置。你能否提供一個更完整的例子來說明卷真的不可用? – programmerq

回答

3

我不知道這是否是你想要的解決方案,但我一直在使用它使用cat命令提供我script.sh到容器此運行命令:

docker run -it --name=some_name --rm \ 
    -v "host/path:/path/inside/container" \ 
    image_name \ 
    /bin/bash -c "$(cat ./script.sh)" 

在這種情況下,腳本運行安裝完成後。我確信這是因爲我使用了腳本中已裝入卷的文件。