2017-05-10 37 views
1

的文件夾結構,我有這樣的形象:泊塢窗:不能訪問基於圖像

FROM ubuntu:14.04.3 

# copy db project to container 
ADD . /db_project 

WORKDIR /db_project 

CMD ["./gitinitall.sh"] 

這將複製與DB項目當前目錄的,它包含了將被檢查出來,並從拉git的子模塊的內容回購。所以在db_project中是我運行的shell腳本來獲取子模塊。還有使用dbs的後端。該圖像被推送到一個私人回購。

我想使用這個圖像創建一個容器,我需要添加數據庫的配置用於需要的地方部署,像環境:

FROM myprivatedockerrepo:5000/db_project 
... 
WORKDIR /db_project 
COPY config/dev.config /db_project/apps/mydb_db/config/dev.config 

# get everything needed for backend 
RUN mix deps.get 

# expose the backend port 
EXPOSE backendport 

# start the beckend with the proper db configured 
CMD ["./startbeckend"] 

但它未能RUN如果我在運行前添加

RUN ls apps/mydb_db 

Step 14/20 : RUN mix deps.get 
---> Running in ab7375d69989 
warning: path "apps/mydb_db" is a directory but it has no mix.exs. Mix won't consider this directory as part of your umbrella application. Please add a "mix.exs" or set the ":apps" key in your umbrella configuration with all relevant apps names as atoms 

:混合deps.get混合命令:

ls: cannot access apps/mydb_db: No such file or directory 

如此看來,雖然在圖像中使用,myprivatedockerrepo:5000/db_project,應該有 db_project /應用/ mydb_db - 由shell腳本創建mydb_db子模塊從混帳得到的,它不能找到它,也許我不明白碼頭層或什麼?

+0

您可以通過註釋掉虛線來調試此類事物,然後運行例如'docker run -it /bin/sh'。 –

+0

很難找到你的問題的解決方案,而不知道你的項目是什麼dir –

回答

1

要複製您需要添加一個最後的 '/'

#Dockerfile 添加文件夾。/db_project/

參見這裏:https://docs.docker.com/engine/reference/builder/#add

+0

是的,沒錯,OP使用COPY代替,更好!與COPY沒有最後一個斜槓需要:) – OscarAkaElvis

+0

感謝您的快速回復,但如果我添加運行ls/db_project我得到的所有項目結構的文件夾應用程序也在那裏,但是空的... – whiteadi

0

是我不好, 的gitinitall.sh腳本來獲取和更新來自git的所有子模塊沒有工作,因爲有圖像沒有git的設置或SSH密鑰,但它沒有返回任何代碼,所以它沒有顯示任何失敗。