2015-04-17 7 views
6

Sto utilizzando un file docker-compose.yml per creare 3 contenitori docker per il mio django nginx postgresql e un contenitore di dati puri.docker-compose per un contenitore di dati e un server Web puri, postgresql

Qui è la mia finestra mobile-compose.yml

data: 
    # pure data container 
    image: busybox 
    volumes: 
    - /etc/postgresql 
    - /var/log/postgresql:/var/log/postgresql 
    - /var/lib/postgresql 
    - /var/log/nginx:/var/log/nginx 
    - /var/log/supervisor:/var/log/supervisor 

db: 
    image: postgres 
    volumes_from: 
    - data 

web: 
    build: . 
    ports: 
    - "80:80" 
    - "443:443" 
    links: 
    - db 
    volumes_from: 
    - data 


$docker ps -a 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS          NAMES 
cc26b3a72a02  myweb_web:latest "supervisord -n"  6 minutes ago  Up 6 minutes    0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp myweb_web_1   
14763a9f68d1  postgres:latest  "/docker-entrypoint. 6 minutes ago  Up 6 minutes    5432/tcp         myweb_db_1   
37598892038b  busybox:latest  "/bin/sh"    6 minutes ago  Exited (0) 6 minutes ago            myweb_data_1 

ho dubbi su come eseguire il backup e ripristinare i dati di PostgreSQL memorizzati nel contenitore di dati puri (myweb_data_1). Uso il comando "docker-compose build & & docker-compose up" per ricostruire le immagini della finestra mobile e riavviare i contenitori se aggiorno i codici, ma non sono sicuro che sia giusto o il modo migliore per farlo.

risposta

0

Si potrebbe provare questo:

docker eseguire --volumes-da myweb_data_1 -v $ (PWD):/backup ubuntu tar cvf /backup/backup.tar

3

non lo faccio avere esperienza con postgresql, ma da un punto di vista docker questo approccio sembra perfettamente soddisfacente. I tuoi dati saranno nel contenitore dei dati. Non sarà interessato da docker-compose build && docker-compose up. Raman Gupta offre una buona introduzione a questo argomento nel suo article.

In questo sottolinea anche che è necessario il giusto atteggiamento per contenitori di soli dati. Per te questo significa che puoi avere un "backup-container" "". Utilizzare l'immagine postgres ed eseguire un nuovo contenitore da esso, che utilizza --volumes-from myweb_data_1. Ora nel contenitore hai gli strumenti appropriati da postgresql e accesso al tuo database nel contenitore dei dati.

Anche in questo caso, postgresql potrebbe essere diverso, ma per mysql questo è il modo, che funziona perfettamente e secondo me è una buona pratica. A proposito, mysql è un server. Quindi avvii un nuovo contenitore e lo colleghi (--link) al tuo contenitore myweb_db_1. Non sono sicuro di come si comporta postgresql.

Problemi correlati