2015-04-17 45 views
6

我正在使用docker-compose.yml文件爲我的django nginx postgresql和純數據容器構建3個docker容器。docker-compose爲純數據容器和web服務器,postgresql

這裏是我的搬運工,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 

我對如何備份和恢復存儲在純數據容器(myweb_data_1)PostgreSQL的數據的擔憂。我使用「docker-compose build & & docker-compose up」命令重建Docker鏡像並重新啓動容器,如果我更新代碼的話,但不知道這是否正確或最好的方法。

回答

0

你可以試試這個:

搬運工運行--volumes,從myweb_data_1 -v $(PWD):/備份Ubuntu的焦油CVF /backup/backup.tar

3

我不有postgresql的經驗,但從docker的角度來看,這種方法看起來非常好。您的數據將位於數據容器中。它不會受到docker-compose build && docker-compose up的影響。拉曼古普塔在他的article中給出了一個很好的介紹。

因爲他還強調你需要適合數據專用容器。對你而言,這意味着你可以有一個「備份容器」。使用postgres圖像並從中運行一個新的容器,該容器使用--volumes-from myweb_data_1。現在在容器中,您擁有來自postgresql的正確工具並可以訪問數據容器中的數據庫。

同樣,postgresql可能會有所不同,但對於mysql來說,這是一種完美的方式,並且是我理解最佳實踐的方式。順便說一句,mysql是一個服務器。因此,您將開始一個新的容器並將其與您的myweb_db_1容器相鏈接(--link)。不知道postgresql的行爲如何。