PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Banco de dados persistente usando volumes docker


De acordo com o Ancoragem do Docker Compose , quando você escreve algo como:
volumes:
  - /var/lib/postgresql/data

Ele cria um novo volume docker e o mapeia para /var/lib/postgresql/data dentro do contêiner. Portanto, cada vez que você executar docker-compose up e docker-compose down , ele cria um novo volume. Você pode confirmar o comportamento com docker volume ls .

Para evitá-lo, você tem duas opções:

(A) Mapear o diretório do host no contêiner

Você pode mapear o diretório do host para o contêiner usando <HOST_PATH>:<CONTAINER_PATH> .
volumes:
  - /path/to/your/host/directory:/var/lib/postgresql/data

Os dados do postgresql serão salvos em /path/to/your/host/directory do host do contêiner.

(B) Usar contêiner externo

docker-compose tem uma opção de contêiner externo .Quando definido como true, nem sempre criará volume.Aqui está um exemplo.
version: '2'
services:
  dbdata:
    image: postgres:9.5.2
    volumes:
      - mypostgresdb:/var/lib/postgresql/data
volumes:
  mypostgresdb:
    external: true

Com external: true , o docker-compose não criará o mypostgredb volume, então você tem que criá-lo por conta própria usando o seguinte comando:
docker volume create --name=mypostgredb

Os dados do postgresql serão salvos no volume docker chamado mypostgredb . Leia a referência para mais detalhes.