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

Erro:importação do banco de dados Postgres no contêiner docker

Configurar uma montagem de dump de banco de dados


Você precisará montar o dump no contêiner para poder acessá-lo. Algo assim em docker-compose.yml:
db:
  volumes:
    - './db_dump:/db_dump'

Crie um diretório local chamado db_dump e coloque seu db_dump.gz arquivo lá.

Iniciar o contêiner de banco de dados


Use POSTGRES_DB no ambiente (como você mencionou em sua pergunta) para criar automaticamente o banco de dados. Iniciar db por si só, sem o servidor Rails.
docker-compose up -d db

Importar dados


Aguarde alguns segundos para que o banco de dados fique disponível. Em seguida, importe seus dados.
docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz

Você também pode apenas criar um script para fazer essa importação, colocá-lo em sua imagem e, em seguida, usar um único comando docker-compose para chamá-lo. Ou você pode fazer com que seu script de ponto de entrada verifique se um arquivo de despejo está presente e, em caso afirmativo, descompacte-o e importe-o ... o que você precisar fazer.

Iniciar o servidor Rails

docker-compose up -d web

Automatizando isso


Se você estiver fazendo isso manualmente para preparar uma nova configuração, está feito. Se você precisar automatizar isso em uma cadeia de ferramentas, poderá fazer algumas dessas coisas em um script. Basta iniciar os contêineres separadamente, fazendo a importação do banco de dados no meio e usar sleep para cobrir quaisquer atrasos na inicialização.