2015-04-17 4 views
6

Я использую файл docker-compose.yml для сборки 3 контейнеров докеров для моего django nginx postgresql и чистого контейнера данных.docker-compose для чистого контейнера данных и веб-сервера, 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 

У меня есть опасения о том, как резервное копирование и восстановление данных, хранящихся в PostgreSQL чистом контейнере данных (myweb_data_1). Я использую "docker-compose build & & docker-compose up" команда для восстановления изображений докеров и перезапуска контейнеров, если я обновляю коды, но не уверен, что это правильно или лучший способ сделать это.

ответ

0

Вы можете попробовать это:

Докер запустить --volumes-от myweb_data_1 -v $ (PWD):/резервного копирования убунту деготь НАСТ.ВИДОИС /backup/backup.tar

3

Я не имеют опыт работы с postgresql, но с точки зрения докеров этот подход кажется совершенно прекрасным. Ваши данные будут в контейнере данных. docker-compose build && docker-compose up не повлияет. Раман Гупта дает хорошее введение в эту тему в своем article.

В этом он также подчеркивает, что вам нужно правильное мышление для данных только для контейнеров. Для вас это означает, что вы можете иметь «резервный контейнер» . Используйте изображение postgres и запустите с него новый контейнер, который использует --volumes-from myweb_data_1. Теперь в контейнере у вас есть соответствующие инструменты из postgresql и доступ к вашей базе данных в контейнере данных.

Опять же, postgresql может быть другим, но для mysql это способ, который отлично работает и для меня лучше всего подходит. Кстати, mysql - это сервер. Таким образом, вы должны начать новый контейнер и связать его (--link) с контейнером myweb_db_1. Не знаете, как работает postgresql.