5

Uso la finestra mobile e la finestra mobile per sviluppare un'app Django con front end React. I volumi non vengono montati in ambiente Debian ma funzionano correttamente su OSX e Windows, ho dovuto risolvere questo problema per giorni, ho creato una versione leggera del mio progetto che ancora replica il problema che puoi trovare in https://github.com/firetix/docker_bug. mia finestra mobile-compose.yml:Volumi host non montati su "Docker-compose up"

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

mio Dockerfile è come seguire

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

Quando eseguo finestra mobile-composizione costruire tutto funziona correttamente. Ma quando ho eseguito finestra mobile-up comporre ricevo

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

Ho trovato questa domanda su StackOverflow How to mount local volumes in docker machine seguito le soluzioni alternative proposte senza successo.

Sto facendo qualcosa di sbagliato? Perché funziona su osx e windows ma non sull'ambiente Debian? C'è qualche soluzione che funziona su un ambiente Debian? Sia Osx che Debian hanno/Users/folders come cartella condivisa quando controllo VirtualBox GUI.

+0

Ho trovato questo questioni GitHub che è legato penso https://github.com/docker/machine/issues/179 –

risposta

1

Questo non dovrebbe funzionare per voi su OSX, ma da solo Debian. Ecco perché:

Quando si aggiunge ./command.sh al volume /home/docker/django/django/, l'immagine si integra perfettamente, con il file nella directory corretta. Ma quando hai il contenitore up, stai montando la tua directory locale "in cima" a quella che hai creato nell'immagine. Quindi, non v'è nulla di più lì ...

vi consiglio di aggiungere command.sh in una posizione diversa, ad esempio, /opt/django/ o qualcosa del genere, e cambiando il vostro comando finestra mobile per ./opt/command.sh.

O più semplicemente, una cosa del genere, ecco il codice completo:

# 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

Non sono sicuro che questo è vero, ho appena provato su OSX el Capitain Docker v 1.9. 0, docker-compose 1.5.0 e sta funzionando perché il montaggio su 'Top of' dovrebbe sostituire i file locali command.sh, non montare un volume vuoto. In OSX esso sovrascrive il file ma su Debian ottengo ancora il file di errore command.sh non trovato. Ho anche provato a spostare command.sh in una cartella non montata/opt/ancora ottenuto lo stesso problema. @ Brandon ringrazia per la risposta! –

+0

Per quanto ne so, i volumi host diretti devono essere scritti in modo assoluto (possono usare le variabili env '$ {PWD}' per quello. – BlackStork

0

credo che questo dovrebbe funzionare. ci sono stati alcuni problemi con le versioni di comporre docker usando percorsi relativi.

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