docker-compose为纯数据容器和web服务器,postgresql

docker-compose为纯数据容器和web服务器,postgresql

问题描述:

我正在使用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镜像并重新启动容器,如果我更新代码的话,但不知道这是否正确或最好的方法。

你可以试试这个:

搬运工运行--volumes,从myweb_data_1 -v $(PWD):/备份Ubuntu的焦油CVF /backup/backup.tar

我不有postgresql的经验,但从docker的角度来看,这种方法看起来非常好。您的数据将位于数据容器中。它不会受到docker-compose build && docker-compose up的影响。拉曼古普塔在他的article中给出了一个很好的介绍。

因为他还强调你需要适合数据专用容器。对你而言,这意味着你可以有一个“备份容器”。使用postgres图像并从中运行一个新的容器,该容器使用--volumes-from myweb_data_1。现在在容器中,您拥有来自postgresql的正确工具并可以访问数据容器中的数据库。

同样,postgresql可能会有所不同,但对于mysql来说,这是一种完美的方式,并且是我理解最佳实践的方式。顺便说一句,mysql是一个服务器。因此,您将开始一个新的容器并将其与您的myweb_db_1容器相链接(--link)。不知道postgresql的行为如何。