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 ./databasedentro 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, ./databaseapenas obtém uma datapasta 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 inspecte 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 dbe db.create_all()a partir de um docker runapós o início dos recipientes. Eu não initdbdiretamente da linha de comando.
sudo su -e procurar ./database/data. Não há nada lá, tanto quanto eu posso dizer.
initdblinha de comando para inicializar seu cluster de banco de dados?