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.