Meu arquivo de composição do docker possui três contêineres, web, nginx e postgres. O Postgres fica assim:
postgres:
container_name: postgres
restart: always
image: postgres:latest
volumes:
- ./database:/var/lib/postgresql
ports:
- "5432:5432
Meu objetivo é montar um volume que corresponda a uma pasta local chamada ./database
dentro do contêiner do postgres como /var/lib/postgres
. Quando inicio esses contêineres e insiro dados no postgres, verifico se /var/lib/postgres/data/base/
estão cheios dos dados que estou adicionando (no contêiner do postgres), mas no meu sistema local, ./database
apenas obtém uma data
pasta nele, ou seja, ./database/data
é criada, mas está vazia . Por quê?
Notas:
- Isso sugere que meu arquivo acima deve funcionar.
- Essa pessoa está usando serviços de docker, o que é interessante
ATUALIZAÇÃO 1
Por sugestão de Nick, fiz um docker inspect
e descobri:
"Mounts": [
{
"Source": "/Users/alex/Documents/MyApp/database",
"Destination": "/var/lib/postgresql",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35",
"Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
O que faz parecer que os dados estão sendo roubados por outro volume que não me codifiquei. Não sei por que isso é. A imagem do postgres está criando esse volume para mim? Nesse caso, existe alguma maneira de usar esse volume em vez do volume que estou montando quando reinicio? Caso contrário, existe uma boa maneira de desativar esse outro volume e usar o meu ./database
?
ATUALIZAÇÃO 2
Encontrei a solução, graças ao Nick! (e outro amigo) Responda abaixo.
from app import db
e db.create_all()
a partir de um docker run
após o início dos recipientes. Eu não initdb
diretamente da linha de comando.
sudo su -
e procurar ./database/data
. Não há nada lá, tanto quanto eu posso dizer.
initdb
linha de comando para inicializar seu cluster de banco de dados?