5

我正在使用docker-machine和docker-compose來開發一個帶有React前端的Django應用程序。雖然這些卷並未安裝在Debian環境中,但可以在OSX和Windows上正常運行,但我一直在爲這個問題苦苦掙扎數日,我創建了一個輕型版本的項目,仍然複製了您可以在https://github.com/firetix/docker_bug中找到的問題。 我的搬運工,compose.yml:未在'Docker-up'上安裝主機卷

django: 
    build: django 
    volumes: 
     - ./django/:/home/docker/django/ 

我Dockerfile是遵循

FROM python:2.7 
RUN mkdir -p /home/docker/django/ 
ADD . /home/docker/django/ 
WORKDIR /home/docker/django/ 
CMD ["./command.sh"] 

當我運行搬運工,撰寫建立一切工作正常。但是,當我跑碼頭工人,組成了我得到

[8] System error: exec: "./command.sh": stat ./command.sh: no such file or directory 

我發現計算器 How to mount local volumes in docker machine隨後沒有成功的解決方法提出了這個問題。

我我做錯了什麼?爲什麼這在osx和windows上工作,而不是在Debian環境下工作?是否有任何解決方法適用於Debian環境?當我檢查VirtualBox GUI時,Osx和Debian都將/ Users /文件夾作爲共享文件夾。

+0

我發現有關這個問題的GitHub我認爲https://github.com/docker/machine/issues/179 –

回答

1

這不應該在OSX上爲你工作,而是單獨的Debian。原因如下:

當您將./command.sh添加到卷/home/docker/django/django/時,圖像生成良好,文件位於正確的目錄中。但是,當您的容器爲up時,您正在將本地目錄安裝在您在圖像中創建的目錄之上。因此,這裏不再有任何東西......

我建議將command.sh添加到其他位置,例如/opt/django/或其他東西,並將docker命令更改爲./opt/command.sh

或者更簡單地說,這樣的事情,這裏是全碼:

# Dockerfile 
FROM python:2.7 
RUN mkdir -p /home/docker/django/ 
WORKDIR /home/docker/django/ 

# docker-compose.yml 
django: 
    build: django 
    command: ./command.sh 
    volumes: 
     - ./django/:/home/docker/django/ 
+0

不知道這是真的,我只是測試它在OSX EL capitain泊塢v 1.9。 0,docker-compose 1.5.0,並且它正在工作,因爲在'Top of'上的安裝應該用本地文件command.sh覆蓋,而不是掛載一個空的卷。在OSX中,它覆蓋了文件,但在Debian上,我仍然沒有找到錯誤文件command.sh。我也嘗試將command.sh移動到一個沒有安裝的文件夾中/ opt /仍然遇到同樣的問題@ Brandon感謝您的回答! –

+0

據我所知,直接主機卷必須以絕對方式寫入(可以使用'$ {PWD}'env變量。 – BlackStork

0

我認爲這應該工作。使用相對路徑的docker-compose版本存在一些問題。

django: 
    build: django 
    volumes: 
    - ${PWD}/django:/home/docker/django