Sono confuso su come utilizzare il volume dati denominato (non il contenitore dati).Il volume denominato Docker non si aggiorna
Ho un volume di dati con nome app_src
montato su /usr/src/app
utilizzando il file di composizione docker. Tuttavia, dopo aver apportato modifiche al mio codice sorgente (localmente), la creazione dell'immagine non aggiorna il volume.
sto costruendo l'immagine in questo modo,
docker-compose -f development.yml build
ed eseguirlo docker-compose -f development.yml up -d
.
Per confermare che il volume non cambia, l'ho collegato al contenitore in esecuzione e, a dire il vero, il codice sorgente non è aggiornato.
Ecco la mia finestra mobile comporre il file development.yml
e Dockerfile
per il servizio web
. versione: '2'
services:
web:
restart: always
build: ./web
expose:
- "8000"
volumes:
- app_src:/usr/src/app
links:
- postgres:postgres
env_file: development.env
command: ./start_web.sh
volumes:
app_src: {}
FROM python:3.4.4
WORKDIR /usr/src/app
RUN rm -rf /usr/src/app/*
COPY . /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
ho potuto farlo funzionare montando il padrone di casa in questo modo,
volumes:
- ./web/src:/usr/src/app
Sono su Ubuntu 16.04 in esecuzione finestra mobile 1.11.2. La mia comprensione è sbagliata? Ho dato un'occhiata alla documentazione ma ho trovato tutto ciò che spiegava il volume davvero bene.
Ok, questo ha senso. Ero un po 'confuso su come si costruisce con la composizione. C'è un modo per svuotare il volume denominato da docker-compose quando si attiva il servizio? 'docker-compose up' -> Voglio cancellare la vol dir e copiare l'ultimo file dall'host? –
Non funzionerebbe per eliminare la directory all'inizio del contenitore poiché ciò accadrebbe dopo che Docker ha verificato la presenza di una cartella vuota. Se stai cercando di avere sempre questo inizializzato con il contenuto del contenitore, e non ti dispiace cancellare il volume precedente, devo chiederti se ne hai davvero bisogno come volume? – BMitch
hai ragione. La mia soluzione ora è quella di rimuovere il volume tutti insieme e montarlo dal file host durante lo sviluppo. Ho il volume al primo posto perché ho pensato di condividere il codice in più contenitori, ma ora non ha senso farlo. –